ruby-jss 1.2.4a2 → 1.2.4a3

Sign up to get free protection for your applications and to get access to all the features.

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