ruby-jss 4.0.1 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: caf5f70df9ef7016f40e810f33b31d7c04b07a3a6986bede21313cf0a5553cac
4
- data.tar.gz: 104b4e8f260a35b1206b1d537f9b3f12897792d9d7797e63b704b9dee568456c
3
+ metadata.gz: 891d497b1459d24035000f157551cd1d87cd5028d4229f3c4702173229c06138
4
+ data.tar.gz: 6b6cb140ab919684ffcdb51c09102b3bbe0cce9ae0fed225fc53f789dd057332
5
5
  SHA512:
6
- metadata.gz: ef1677172d13ee5d43a241af7ba12c8dc14b1a5e72a1398b3656cca86b595e8984b8669fe3d35d88f23c793f7a9804bb811da06bda9a39cb783137ce2a4a507b
7
- data.tar.gz: e8a310a351a58b2d125b863cd11b7c1516a16560aa5ffb2ab6003808265b797dc8edac74a9b7668420be67b31083d273cd6fc14f9a550d399a431f005816a524
6
+ metadata.gz: 99ebd2400e27522e6baffda8d0f1239a70e5dad3fbb240deb6078341fe012661d892154f866c5401495b0d9549faf6d852b5c7d8c45fcbbaf044ecfb6ca708c9
7
+ data.tar.gz: 06e95ad34b057d7d905268c234943647777f30a59929c8a48d0db7299240eea82643c54f11b9fc8221c90e357a753b3e50af4cb6c15c6d4e435fd16809560830
data/CHANGES.md CHANGED
@@ -14,6 +14,13 @@ __Please update all installations of ruby-jss to at least v1.6.0.__
14
14
 
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
+ --------
18
+ ## \[4.1.0] 2024-04-06
19
+
20
+ ### Changed
21
+
22
+ - ruby-jss now uses version 2.0 or higher of [Faraday](https://lostisland.github.io/faraday/#/). This required minor changes to how https connections are established.
23
+
17
24
  --------
18
25
  ## \[4.0.0] 2024-02-05
19
26
 
@@ -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.1'.freeze
30
+ VERSION = '4.1.0'.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.1
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Lasell
8
8
  - Aurica Hayes
9
- - Kristoffer Landes
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2024-02-05 00:00:00.000000000 Z
12
+ date: 2024-04-06 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
@@ -920,11 +925,14 @@ files:
920
925
  homepage: http://pixaranimationstudios.github.io/ruby-jss/
921
926
  licenses:
922
927
  - Nonstandard
923
- metadata: {}
928
+ metadata:
929
+ source_code_uri: https://github.com/PixarAnimationStudios/ruby-jss
930
+ changelog_uri: https://github.com/PixarAnimationStudios/ruby-jss/blob/master/CHANGES.md
931
+ wiki_uri: https://github.com/PixarAnimationStudios/ruby-jss/wiki
924
932
  post_install_message:
925
933
  rdoc_options:
926
934
  - "--title"
927
- - JSS
935
+ - Jamf
928
936
  - "--line-numbers"
929
937
  - "--main"
930
938
  - README.md