ruby-jss 4.0.0b1 → 4.1.0b2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5404634d6e9f6031506f64c61391ca5a461ad71e372922d20c2785022cede9e7
4
- data.tar.gz: 435a69e88d14c9df2ddac29ed1ce8a8dffd485ac2c6969d6f765a92a67d75c97
3
+ metadata.gz: 04a9f6decd6b58c0603dcad2e8a553c3ac80e0147618c8fd7fb08d545ff1d537
4
+ data.tar.gz: '050849dd7596137de61bc096b6922bfa7a8e1d98dbd7b41048d8eb7552be13e9'
5
5
  SHA512:
6
- metadata.gz: c75068fdbb7fbe7c780a46f76e2430ed3c00f3b5afd4cf6020d4ad39d961b07207f4da27a466eb990f164ea499a123a2e12d2a79c42b95b6f208c07f5554cdbd
7
- data.tar.gz: 1e8dc60c2f322c147b7650b76c565fc04c959c8eb43554b5efed0c8f7ce032683f22ee967d23c494dea2f4a949e96f8b03d32d1aa369219d9545559edbb0c187
6
+ metadata.gz: f5762d83c0693aacdc610026c3f81f5675ec599caf80b7064163b32ca218bb19739bec04360e6f8b02851a51bf66ed26dca2de50fbf317a6dc8d30dc2d88c612
7
+ data.tar.gz: e866b77f659b4a2d28c624e47ff40676894a1515c277f4e350d0470b73881f46cab5ea2686006b27f7d36f0ebdab886ab5cd391ce14050f6004cf5c84bc6254f
data/CHANGES.md CHANGED
@@ -15,7 +15,7 @@ __Please update all installations of ruby-jss to at least v1.6.0.__
15
15
  Many many thanks to actae0n of Blacksun Hackers Club for reporting this issue and providing examples of how it could be exploited.
16
16
 
17
17
  --------
18
- ## \[4.0.0] 2024-01-22
18
+ ## \[4.0.0] 2024-02-05
19
19
 
20
20
  ### Changed
21
21
  - Jamf::ComputerPrestage now accesses the v3 endpoints as needed - the v1 and some v2 endpoints are deprecated and will be removed from the Jamf Pro API sometime soon
@@ -61,7 +61,7 @@ module Jamf
61
61
  def c_get(rsrc, format = :json, raw_json: false)
62
62
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
63
63
 
64
- validate_connected @c_cnx
64
+ validate_connected
65
65
  raise Jamf::InvalidDataError, 'format must be :json or :xml' unless Jamf::Connection::GET_FORMATS.include?(format)
66
66
 
67
67
  resp =
@@ -92,7 +92,7 @@ module Jamf
92
92
  # @return [String] the xml response from the server.
93
93
  #
94
94
  def c_post(rsrc, xml)
95
- validate_connected @c_cnx
95
+ validate_connected
96
96
 
97
97
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
98
98
 
@@ -127,7 +127,7 @@ module Jamf
127
127
  # @return [String] the xml response from the server.
128
128
  #
129
129
  def c_put(rsrc, xml)
130
- validate_connected @c_cnx
130
+ validate_connected
131
131
 
132
132
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
133
133
 
@@ -160,7 +160,7 @@ module Jamf
160
160
  # @return [String] the xml response from the server.
161
161
  #
162
162
  def c_delete(rsrc)
163
- validate_connected @c_cnx
163
+ validate_connected
164
164
  raise MissingDataError, 'Missing :rsrc' if rsrc.nil?
165
165
 
166
166
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
@@ -195,23 +195,14 @@ module Jamf
195
195
  # @return [String] the xml response from the server.
196
196
  #
197
197
  def upload(rsrc, local_file)
198
- validate_connected @c_cnx
198
+ validate_connected
199
199
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
200
200
 
201
- # the upload file object for faraday
202
- local_file = Pathname.new local_file
203
- upfile = Faraday::UploadIO.new(
204
- local_file.to_s,
205
- 'application/octet-stream',
206
- local_file.basename.to_s
207
- )
201
+ payload = {}
202
+ payload[:name] = Faraday::Multipart::FilePart.new(local_file.to_s, 'application/octet-stream')
203
+
204
+ resp = @c_cnx.post rsrc, payload
208
205
 
209
- # send it and get the response
210
- resp =
211
- @c_cnx.post rsrc do |req|
212
- req.headers['Content-Type'] = 'multipart/form-data'
213
- req.body = { name: upfile }
214
- end
215
206
  @last_http_response = resp
216
207
 
217
208
  unless resp.success?
@@ -228,7 +219,10 @@ module Jamf
228
219
  # create the faraday CAPI connection object
229
220
  def create_classic_connection
230
221
  Faraday.new(@c_base_url, ssl: ssl_options) do |cnx|
231
- cnx.authorization :Bearer, @token.token
222
+ # use a proc for the token value, so its looked up on every request
223
+ # meaning we don't have to validate that the token is still valid before every request
224
+ # because the Token instance will (usually) refresh it automatically.
225
+ cnx.request :authorization, 'Bearer', -> { @token.token }
232
226
 
233
227
  cnx.options[:timeout] = @timeout
234
228
  cnx.options[:open_timeout] = @open_timeout
@@ -236,7 +230,7 @@ module Jamf
236
230
  cnx.request :multipart
237
231
  cnx.request :url_encoded
238
232
 
239
- cnx.adapter Faraday::Adapter::NetHttp
233
+ cnx.adapter :net_http
240
234
  end
241
235
  end
242
236
 
@@ -264,18 +264,9 @@ module Jamf
264
264
 
265
265
  # raise exception if not connected, and make sure we're using
266
266
  # the current token
267
- def validate_connected(subcnx)
267
+ def validate_connected
268
268
  using_dft = 'Jamf.cnx' if self == Jamf.cnx
269
269
  raise Jamf::InvalidConnectionError, "Connection '#{@name}' Not Connected. Use #{using_dft}.connect first." unless connected?
270
-
271
- update_refreshed_token(subcnx)
272
- end
273
-
274
- # always use the current token, which by default will auto-refresh
275
- def update_refreshed_token(subcnx)
276
- return if subcnx.headers['Authorization'] == "Bearer #{@token.token}"
277
-
278
- subcnx.authorization :Bearer, @token.token
279
270
  end
280
271
 
281
272
  # With a REST connection, there isn't any real "connection" to disconnect from
@@ -37,7 +37,10 @@ module Jamf
37
37
  #######################################################
38
38
  def create_jp_connection(parse_json: true)
39
39
  Faraday.new(@jp_base_url, ssl: ssl_options) do |cnx|
40
- cnx.authorization :Bearer, @token.token
40
+ # use a proc for the token value, so its looked up on every request
41
+ # meaning we don't have to validate that the token is still valid before every request
42
+ # because the Token instance will (usually) refresh it automatically.
43
+ cnx.request :authorization, 'Bearer', -> { @token.token }
41
44
 
42
45
  cnx.options[:timeout] = @timeout
43
46
  cnx.options[:open_timeout] = @open_timeout
@@ -47,7 +50,7 @@ module Jamf
47
50
  cnx.response :json, parser_options: { symbolize_names: true }
48
51
  end
49
52
 
50
- cnx.adapter Faraday::Adapter::NetHttp
53
+ cnx.adapter :net_http
51
54
  end
52
55
  end
53
56
 
@@ -57,7 +60,7 @@ module Jamf
57
60
  # @return [Hash] the result of the get
58
61
  #######################################################
59
62
  def jp_get(rsrc)
60
- validate_connected @jp_cnx
63
+ validate_connected
61
64
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
62
65
  resp = @jp_cnx.get(rsrc) do |req|
63
66
  # Modify the request here if needed.
@@ -82,7 +85,7 @@ module Jamf
82
85
  # @return [String] the response body
83
86
  #######################################################
84
87
  def jp_post(rsrc, data)
85
- validate_connected @jp_cnx
88
+ validate_connected
86
89
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
87
90
  resp = @jp_cnx.post(rsrc) do |req|
88
91
  req.body = data
@@ -105,7 +108,7 @@ module Jamf
105
108
  #
106
109
  #######################################################
107
110
  def jp_put(rsrc, data)
108
- validate_connected @jp_cnx
111
+ validate_connected
109
112
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
110
113
  resp = @jp_cnx.put(rsrc) do |req|
111
114
  req.body = data
@@ -128,7 +131,7 @@ module Jamf
128
131
  #
129
132
  #######################################################
130
133
  def jp_patch(rsrc, data)
131
- validate_connected @jp_cnx
134
+ validate_connected
132
135
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
133
136
  resp = @jp_cnx.patch(rsrc) do |req|
134
137
  req.body = data
@@ -149,7 +152,7 @@ module Jamf
149
152
  #
150
153
  #######################################################
151
154
  def jp_delete(rsrc)
152
- validate_connected @jp_cnx
155
+ validate_connected
153
156
  rsrc = rsrc.delete_prefix Jamf::Connection::SLASH
154
157
  resp = @jp_cnx.delete rsrc
155
158
  @last_http_response = resp
@@ -534,11 +534,11 @@ module Jamf
534
534
  con.options[:timeout] = @timeout
535
535
  con.options[:open_timeout] = @timeout
536
536
  if token
537
- con.authorization :Bearer, token
537
+ con.request :authorization, 'Bearer', token
538
538
  else
539
- con.basic_auth @user, Base64.decode64(@pw)
539
+ con.request :authorization, :basic, @user, Base64.decode64(@pw)
540
540
  end
541
- con.adapter Faraday::Adapter::NetHttp
541
+ con.adapter :net_http
542
542
  end # Faraday.new
543
543
  end # token_connection
544
544
 
@@ -551,7 +551,7 @@ module Jamf
551
551
  fcnx.request :url_encoded
552
552
  # activates the json response middleware, parsing all valid response bodies with JSON.parse
553
553
  fcnx.response :json, parser_options: { symbolize_names: true }
554
- fcnx.adapter Faraday::Adapter::NetHttp
554
+ fcnx.adapter :net_http
555
555
  end
556
556
  end # token_connection
557
557
 
@@ -22,8 +22,8 @@
22
22
  ###
23
23
  ###
24
24
 
25
- require 'faraday' # >= 0.17.0
26
- require 'faraday_middleware' # >= 0.13.0
25
+ require 'faraday'
26
+ require 'faraday/multipart'
27
27
 
28
28
  # The main module
29
29
  module Jamf
data/lib/jamf/version.rb CHANGED
@@ -27,6 +27,6 @@
27
27
  module Jamf
28
28
 
29
29
  ### The version of ruby-jss
30
- VERSION = '4.0.0b1'.freeze
30
+ VERSION = '4.1.0b2'.freeze
31
31
 
32
32
  end # module
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-jss
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0b1
4
+ version: 4.1.0b2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Lasell
8
8
  - Aurica Hayes
9
- - Kristoffer Landes
10
- autorequire:
9
+ autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2024-01-03 00:00:00.000000000 Z
12
+ date: 2024-04-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: CFPropertyList
@@ -52,21 +51,24 @@ dependencies:
52
51
  requirements:
53
52
  - - "~>"
54
53
  - !ruby/object:Gem::Version
55
- version: '1.0'
54
+ version: '2.0'
56
55
  type: :runtime
57
56
  prerelease: false
58
57
  version_requirements: !ruby/object:Gem::Requirement
59
58
  requirements:
60
59
  - - "~>"
61
60
  - !ruby/object:Gem::Version
62
- version: '1.0'
61
+ version: '2.0'
63
62
  - !ruby/object:Gem::Dependency
64
- name: faraday_middleware
63
+ name: faraday-multipart
65
64
  requirement: !ruby/object:Gem::Requirement
66
65
  requirements:
67
66
  - - "~>"
68
67
  - !ruby/object:Gem::Version
69
68
  version: '1.0'
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 1.0.4
70
72
  type: :runtime
71
73
  prerelease: false
72
74
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,6 +76,9 @@ dependencies:
74
76
  - - "~>"
75
77
  - !ruby/object:Gem::Version
76
78
  version: '1.0'
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.0.4
77
82
  - !ruby/object:Gem::Dependency
78
83
  name: concurrent-ruby
79
84
  requirement: !ruby/object:Gem::Requirement
@@ -921,10 +926,10 @@ homepage: http://pixaranimationstudios.github.io/ruby-jss/
921
926
  licenses:
922
927
  - Nonstandard
923
928
  metadata: {}
924
- post_install_message:
929
+ post_install_message:
925
930
  rdoc_options:
926
931
  - "--title"
927
- - JSS
932
+ - Jamf
928
933
  - "--line-numbers"
929
934
  - "--main"
930
935
  - README.md
@@ -941,8 +946,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
941
946
  - !ruby/object:Gem::Version
942
947
  version: 1.3.1
943
948
  requirements: []
944
- rubygems_version: 3.0.3.1
945
- signing_key:
949
+ rubygems_version: 3.1.4
950
+ signing_key:
946
951
  specification_version: 4
947
952
  summary: A Ruby interface to the Jamf Pro REST APIs
948
953
  test_files: []