ruby-jss 1.2.4a2 → 1.2.4a3

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.

Potentially problematic release.


This version of ruby-jss might be problematic. Click here for more details.

Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jamf.rb +8 -1
  3. data/lib/jamf/api/abstract_classes/advanced_search.rb +86 -0
  4. data/lib/jamf/api/abstract_classes/collection_resource.rb +3 -8
  5. data/lib/jamf/api/abstract_classes/json_object.rb +11 -5
  6. data/lib/jamf/api/abstract_classes/prestage.rb +189 -6
  7. data/lib/jamf/api/abstract_classes/resource.rb +8 -3
  8. data/lib/jamf/api/connection.rb +19 -9
  9. data/lib/jamf/api/json_objects/criterion.rb +152 -0
  10. data/lib/jamf/api/json_objects/device_enrollment_device.rb +156 -0
  11. data/lib/jamf/api/json_objects/device_enrollment_sync_status.rb +71 -0
  12. data/lib/jamf/api/json_objects/inventory_preload_extension_attribute.rb +6 -1
  13. data/lib/jamf/api/json_objects/prestage_assignment.rb +15 -2
  14. data/lib/jamf/api/json_objects/prestage_scope.rb +5 -2
  15. data/lib/jamf/api/mixins/immutable.rb +1 -1
  16. data/lib/jamf/api/mixins/lockable.rb +9 -1
  17. data/lib/jamf/api/resources/collection_resources/advanced_mobile_device_search.rb +52 -0
  18. data/lib/jamf/api/resources/collection_resources/advanced_user_search.rb +52 -0
  19. data/lib/jamf/api/resources/collection_resources/computer_prestage.rb +3 -1
  20. data/lib/jamf/api/resources/collection_resources/device_enrollment.rb +292 -0
  21. data/lib/jamf/api/resources/collection_resources/inventory_preload_record.rb +7 -7
  22. data/lib/jamf/api/resources/collection_resources/{md_prestage.rb → mobile_device_prestage.rb} +5 -3
  23. data/lib/jamf/exceptions.rb +5 -0
  24. data/lib/jamf/ruby_extensions/array/utils.rb +26 -12
  25. data/lib/jamf/version.rb +1 -1
  26. data/lib/jss/api_object/criteriable/criterion.rb +0 -1
  27. data/lib/jss/version.rb +1 -1
  28. metadata +10 -3
@@ -68,7 +68,6 @@ module Jamf
68
68
  # The 'clear' instance method won't change these attrs
69
69
  UNCLEARABLE_ATTRS = %i[id serialNumber deviceType].freeze
70
70
 
71
-
72
71
  # Object Model / Attributes
73
72
  # See APIObject class documentation for details
74
73
  # of how the OBJECT_MODEL hash works.
@@ -224,7 +223,8 @@ module Jamf
224
223
  # @return [Jamf::InventoryPreloadExtensionAttribute]
225
224
  extensionAttributes: {
226
225
  class: Jamf::InventoryPreloadExtensionAttribute,
227
- multi: true
226
+ multi: true,
227
+ aliases: %i[ext_attrs eas]
228
228
  }
229
229
 
230
230
  }.freeze
@@ -232,7 +232,7 @@ module Jamf
232
232
  parse_object_model
233
233
 
234
234
  # TODO: validation for ea's existance and value data type, once EAs are
235
- # implemented in JPAPI
235
+ # implemented in JPAPI (see inventory_preload_extension_attribute.rb)
236
236
  #
237
237
  # @param ea_name[String] The name of the EA being set
238
238
  #
@@ -256,15 +256,15 @@ module Jamf
256
256
  OBJECT_MODEL.keys.each do |attr|
257
257
  next if UNCLEARABLE_ATTRS.include? attr
258
258
 
259
- # skip nils
260
- curr_val = send attr
261
- next unless curr_val
262
-
263
259
  if attr == :extensionAttributes
264
260
  extensionAttributes = []
265
261
  next
266
262
  end
267
263
 
264
+ # skip nils
265
+ curr_val = send attr
266
+ next unless curr_val
267
+
268
268
  send "#{attr}=", nil
269
269
  end
270
270
  end
@@ -106,17 +106,18 @@ module Jamf
106
106
  names: {
107
107
  class: Jamf::MobileDevicePrestageNames
108
108
  }
109
-
110
109
  ).freeze
111
110
 
112
111
  parse_object_model
113
112
 
113
+ # Class Methods
114
+ ###############################################
114
115
 
115
116
  def self.sync_status(prestage = nil, latest = false, cnx: Jamf.cnx)
116
117
  @sync_rsrc ||= "#{self::RSRC_VERSION}/#{self::RSRC_PATH}/#{SYNC_RSRC}"
117
118
 
118
119
  if prestage
119
- id = self.valid_id prestage
120
+ id = valid_id prestage
120
121
  raise Jamf::NoSuchItemError, "No #{self.class} matching '#{prestage}'" unless id
121
122
 
122
123
  rsrc = "#{@sync_rsrc}/#{id}"
@@ -126,9 +127,10 @@ module Jamf
126
127
  else
127
128
  cnx.get(@sync_rsrc).map { |ss| Jamf::PrestageSyncStatus.new ss }
128
129
  end
129
-
130
130
  end # self.sync_status(prestage = nil, latest = false, cnx: Jamf.cnx)
131
131
 
132
+ # Instance Methods
133
+ ###############################################
132
134
 
133
135
  def sync_status(latest = false)
134
136
  self.class.sync_status @id, latest, cnx: @cnx
@@ -89,6 +89,11 @@ module Jamf
89
89
  #
90
90
  class ConflictError < RuntimeError; end
91
91
 
92
+ # A 409 error specifically raised when a Lockable resource
93
+ # has changed between fetching and saving.
94
+ # See the Jamf::Lockable mixin.
95
+ class VersionLockError < ConflictError; end
96
+
92
97
  # BadRequestError - raise this when
93
98
  # attempts to PUT or PUSH or DELETE to the API
94
99
  # result in a 400 Bad Request http error.
@@ -27,18 +27,32 @@ module JamfRubyExtensions
27
27
 
28
28
  module Utils
29
29
 
30
- # Fetch a string from an Array of Strings case-insensitively,
31
- # e.g. my_array.j_ci_fetch_string('ThRashEer') will return 'thrasher'
32
- # or nil if no match
33
- #
34
- # @param somestring [String] the String to search for
35
- #
36
- # @return [String, nil] The matching string as it exists in the Array, nil if it doesn't exist
37
- #
38
- def j_ci_fetch_string(somestring)
39
- idx = index { |s| s.to_s.casecmp? somestring }
40
- idx ? self[idx] : nil
41
- end
30
+ # Fetch a string from an Array case-insensitively,
31
+ # e.g. if my_array contains 'thrasher',
32
+ # my_array.j_ci_fetch('ThRashEr')
33
+ # will return 'thrasher'
34
+ #
35
+ # returns nil if no match
36
+ #
37
+ # @param somestring [String] the String to search for
38
+ #
39
+ # @return [String, nil] The matching string as it exists in the Array,
40
+ # nil if it doesn't exist
41
+ #
42
+ def j_ci_fetch(somestring)
43
+ each { |s| return s if s.is_a?(String) && s.casecmp?(somestring) }
44
+ nil
45
+ end
46
+
47
+ # case-insensitive version of include?
48
+ #
49
+ # @param somestring [String] the String to search for
50
+ #
51
+ # @return [Boolean]
52
+ #
53
+ def j_ci_include?(somestring)
54
+ any? { |s| s.casecmp? somestring if s.is_a? String }
55
+ end
42
56
 
43
57
  end # module
44
58
 
data/lib/jamf/version.rb CHANGED
@@ -27,6 +27,6 @@
27
27
  module Jamf
28
28
 
29
29
  ### The version of the Jamf module
30
- VERSION = '0.0.0a2'.freeze
30
+ VERSION = '0.0.0a3'.freeze
31
31
 
32
32
  end # module
@@ -68,7 +68,6 @@ module JSS
68
68
  'more than',
69
69
  'less than',
70
70
  'greater than',
71
- 'less than',
72
71
  'greater than or equal',
73
72
  'less than or equal',
74
73
  'before (yyyy-mm-dd)',
data/lib/jss/version.rb CHANGED
@@ -27,6 +27,6 @@
27
27
  module JSS
28
28
 
29
29
  ### The version of ruby-jss
30
- VERSION = '1.2.4a2'.freeze
30
+ VERSION = '1.2.4a3'.freeze
31
31
 
32
32
  end # module
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-jss
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4a2
4
+ version: 1.2.4a3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Lasell
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-11-20 00:00:00.000000000 Z
12
+ date: 2019-12-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: plist
@@ -147,6 +147,7 @@ files:
147
147
  - bin/netseg-update
148
148
  - data/ruby-jss.conf.example
149
149
  - lib/jamf.rb
150
+ - lib/jamf/api/abstract_classes/advanced_search.rb
150
151
  - lib/jamf/api/abstract_classes/collection_resource.rb
151
152
  - lib/jamf/api/abstract_classes/generic_reference.rb
152
153
  - lib/jamf/api/abstract_classes/json_object.rb
@@ -168,6 +169,9 @@ files:
168
169
  - lib/jamf/api/json_objects/change_log_entry.rb
169
170
  - lib/jamf/api/json_objects/computer_prestage_skip_setup_items.rb
170
171
  - lib/jamf/api/json_objects/country.rb
172
+ - lib/jamf/api/json_objects/criterion.rb
173
+ - lib/jamf/api/json_objects/device_enrollment_device.rb
174
+ - lib/jamf/api/json_objects/device_enrollment_sync_status.rb
171
175
  - lib/jamf/api/json_objects/extension_attribute_value.rb
172
176
  - lib/jamf/api/json_objects/installed_application.rb
173
177
  - lib/jamf/api/json_objects/installed_certificate.rb
@@ -200,15 +204,18 @@ files:
200
204
  - lib/jamf/api/mixins/uncreatable.rb
201
205
  - lib/jamf/api/mixins/undeletable.rb
202
206
  - lib/jamf/api/resources/collection_resources/account.rb
207
+ - lib/jamf/api/resources/collection_resources/advanced_mobile_device_search.rb
208
+ - lib/jamf/api/resources/collection_resources/advanced_user_search.rb
203
209
  - lib/jamf/api/resources/collection_resources/building.rb
204
210
  - lib/jamf/api/resources/collection_resources/category.rb
205
211
  - lib/jamf/api/resources/collection_resources/computer.rb
206
212
  - lib/jamf/api/resources/collection_resources/computer_prestage.rb
207
213
  - lib/jamf/api/resources/collection_resources/department.rb
214
+ - lib/jamf/api/resources/collection_resources/device_enrollment.rb
208
215
  - lib/jamf/api/resources/collection_resources/extension_attribute.rb
209
216
  - lib/jamf/api/resources/collection_resources/inventory_preload_record.rb
210
- - lib/jamf/api/resources/collection_resources/md_prestage.rb
211
217
  - lib/jamf/api/resources/collection_resources/mobile_device.rb
218
+ - lib/jamf/api/resources/collection_resources/mobile_device_prestage.rb
212
219
  - lib/jamf/api/resources/collection_resources/script.rb
213
220
  - lib/jamf/api/resources/collection_resources/site.rb
214
221
  - lib/jamf/api/resources/singleton_resources/app_store_country_codes.rb