ruby-jss 1.3.2 → 1.5.3
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.
- checksums.yaml +4 -4
- data/CHANGES.md +122 -0
- data/lib/jamf.rb +18 -16
- data/lib/jamf/api/base_classes/collection_resource.rb +613 -0
- data/lib/jamf/api/{abstract_classes → base_classes}/json_object.rb +109 -101
- data/lib/jamf/api/{abstract_classes → base_classes}/prestage.rb +55 -30
- data/lib/jamf/api/{abstract_classes → base_classes}/resource.rb +10 -6
- data/lib/jamf/api/{abstract_classes → base_classes}/singleton_resource.rb +4 -3
- data/lib/jamf/api/connection.rb +13 -9
- data/lib/jamf/api/connection/api_error.rb +8 -8
- data/lib/jamf/api/connection/token.rb +36 -15
- data/lib/jamf/api/json_objects/device_enrollment_device.rb +14 -7
- data/lib/jamf/api/json_objects/{location.rb → device_enrollment_device_sync_state.rb} +27 -41
- data/lib/jamf/api/json_objects/device_enrollment_sync_status.rb +1 -1
- data/lib/jamf/api/json_objects/{attachment.rb → locale.rb} +14 -23
- data/lib/jamf/api/json_objects/md_prestage_name.rb +1 -1
- data/lib/jamf/api/json_objects/md_prestage_names.rb +2 -2
- data/lib/jamf/api/json_objects/md_prestage_skip_setup_items.rb +50 -1
- data/lib/jamf/api/json_objects/prestage_assignment.rb +2 -2
- data/lib/jamf/api/json_objects/prestage_location.rb +3 -3
- data/lib/jamf/api/json_objects/prestage_purchasing_data.rb +7 -7
- data/lib/jamf/api/json_objects/prestage_scope.rb +1 -1
- data/lib/jamf/api/{resources/collection_resources → json_objects}/time_zone.rb +9 -23
- data/lib/jamf/api/mixins/{abstract.rb → base_class.rb} +34 -16
- data/lib/jamf/api/mixins/bulk_deletable.rb +27 -6
- data/lib/jamf/api/mixins/change_log.rb +201 -51
- data/lib/jamf/api/{resources/collection_resources/computer.rb → mixins/filterable.rb} +19 -17
- data/lib/jamf/api/mixins/pageable.rb +208 -0
- data/lib/jamf/api/{json_objects/installed_application.rb → mixins/sortable.rb} +33 -33
- data/lib/jamf/api/resources/collection_resources/building.rb +16 -9
- data/lib/jamf/api/resources/collection_resources/category.rb +5 -4
- data/lib/jamf/api/resources/collection_resources/computer_prestage.rb +12 -5
- data/lib/jamf/api/resources/collection_resources/department.rb +1 -3
- data/lib/jamf/api/resources/collection_resources/device_enrollment.rb +13 -13
- data/lib/jamf/api/resources/collection_resources/inventory_preload_record.rb +11 -3
- data/lib/jamf/api/resources/collection_resources/mobile_device_prestage.rb +25 -23
- data/lib/jamf/api/resources/collection_resources/script.rb +61 -25
- data/lib/jamf/api/resources/singleton_resources/app_store_country_codes.rb +15 -5
- data/lib/jamf/api/resources/singleton_resources/locales.rb +155 -0
- data/lib/jamf/api/resources/singleton_resources/time_zones.rb +213 -0
- data/lib/jamf/validate.rb +63 -24
- data/lib/jamf/version.rb +1 -1
- data/lib/jss.rb +2 -1
- data/lib/jss/api_connection.rb +113 -406
- data/lib/jss/api_object.rb +10 -20
- data/lib/jss/api_object/advanced_search.rb +27 -26
- data/lib/jss/api_object/app_store_country_codes.rb +298 -0
- data/lib/jss/api_object/categorizable.rb +1 -1
- data/lib/jss/api_object/computer.rb +13 -0
- data/lib/jss/api_object/configuration_profile.rb +60 -4
- data/lib/jss/api_object/directory_binding_type.rb +66 -60
- data/lib/jss/api_object/directory_binding_type/active_directory.rb +71 -34
- data/lib/jss/api_object/directory_binding_type/admitmac.rb +536 -467
- data/lib/jss/api_object/directory_binding_type/centrify.rb +21 -7
- data/lib/jss/api_object/directory_binding_type/open_directory.rb +4 -4
- data/lib/jss/api_object/distribution_point.rb +2 -2
- data/lib/jss/api_object/dock_item.rb +102 -96
- data/lib/jss/api_object/ebook.rb +1 -2
- data/lib/jss/api_object/extendable.rb +1 -1
- data/lib/jss/api_object/extension_attribute.rb +4 -3
- data/lib/jss/api_object/group.rb +33 -2
- data/lib/jss/api_object/mac_application.rb +107 -8
- data/lib/jss/api_object/network_segment.rb +43 -12
- data/lib/jss/api_object/package.rb +1 -1
- data/lib/jss/api_object/patch_source.rb +10 -9
- data/lib/jss/api_object/policy.rb +217 -28
- data/lib/jss/api_object/printer.rb +10 -4
- data/lib/jss/api_object/scopable.rb +10 -15
- data/lib/jss/api_object/scopable/scope.rb +389 -73
- data/lib/jss/api_object/self_servable.rb +17 -9
- data/lib/jss/api_object/uploadable.rb +1 -1
- data/lib/jss/api_object/user.rb +42 -1
- data/lib/jss/api_object/vpp_account.rb +209 -0
- data/lib/jss/api_object/vppable.rb +169 -13
- data/lib/jss/exceptions.rb +3 -0
- data/lib/jss/server.rb +15 -0
- data/lib/jss/utility.rb +142 -37
- data/lib/jss/validate.rb +53 -10
- data/lib/jss/version.rb +1 -1
- metadata +45 -61
- data/lib/jamf/api/abstract_classes/advanced_search.rb +0 -86
- data/lib/jamf/api/abstract_classes/collection_resource.rb +0 -433
- data/lib/jamf/api/abstract_classes/generic_reference.rb +0 -145
- data/lib/jamf/api/abstract_classes/prestage_skip_setup_items.rb +0 -126
- data/lib/jamf/api/json_objects/account_prefs.rb +0 -79
- data/lib/jamf/api/json_objects/android_details.rb +0 -139
- data/lib/jamf/api/json_objects/appletv_details.rb +0 -110
- data/lib/jamf/api/json_objects/cellular_network.rb +0 -151
- data/lib/jamf/api/json_objects/computer_prestage_skip_setup_items.rb +0 -67
- data/lib/jamf/api/json_objects/criterion.rb +0 -152
- data/lib/jamf/api/json_objects/extension_attribute_value.rb +0 -128
- data/lib/jamf/api/json_objects/installed_certificate.rb +0 -53
- data/lib/jamf/api/json_objects/installed_configuration_profile.rb +0 -67
- data/lib/jamf/api/json_objects/installed_ebook.rb +0 -58
- data/lib/jamf/api/json_objects/installed_provisioning_profile.rb +0 -59
- data/lib/jamf/api/json_objects/ios_details.rb +0 -244
- data/lib/jamf/api/json_objects/mobile_device_details.rb +0 -219
- data/lib/jamf/api/json_objects/mobile_device_security.rb +0 -101
- data/lib/jamf/api/json_objects/purchasing_data.rb +0 -125
- data/lib/jamf/api/mixins/locatable.rb +0 -124
- data/lib/jamf/api/mixins/referable.rb +0 -92
- data/lib/jamf/api/resources/collection_resources/account.rb +0 -163
- data/lib/jamf/api/resources/collection_resources/advanced_mobile_device_search.rb +0 -52
- data/lib/jamf/api/resources/collection_resources/advanced_user_search.rb +0 -52
- data/lib/jamf/api/resources/collection_resources/extension_attribute.rb +0 -45
- data/lib/jamf/api/resources/collection_resources/mobile_device.rb +0 -315
- data/lib/jamf/api/resources/collection_resources/site.rb +0 -77
- data/lib/jamf/api/resources/singleton_resources/authorization.rb +0 -88
- data/lib/jamf/api/resources/singleton_resources/client_checkin_settings.rb +0 -139
- data/lib/jamf/api/resources/singleton_resources/reenrollment_settings.rb +0 -95
@@ -36,7 +36,6 @@ module Jamf
|
|
36
36
|
#####################################
|
37
37
|
|
38
38
|
include Jamf::ChangeLog
|
39
|
-
include Jamf::Referable
|
40
39
|
|
41
40
|
# Constants
|
42
41
|
#####################################
|
@@ -46,7 +45,7 @@ module Jamf
|
|
46
45
|
RSRC_PATH = 'departments'.freeze
|
47
46
|
|
48
47
|
# TODO: Jamf - will this be standard for collections?
|
49
|
-
BULK_DELETE_RSRC = 'delete-
|
48
|
+
BULK_DELETE_RSRC = 'delete-multiple'.freeze
|
50
49
|
|
51
50
|
# Object Model / Attributes
|
52
51
|
# See APIObject class documentation for details
|
@@ -74,7 +73,6 @@ module Jamf
|
|
74
73
|
|
75
74
|
parse_object_model
|
76
75
|
|
77
|
-
|
78
76
|
end # class
|
79
77
|
|
80
78
|
end # module
|
@@ -52,7 +52,7 @@ module Jamf
|
|
52
52
|
|
53
53
|
RSRC_VERSION = 'v1'.freeze
|
54
54
|
|
55
|
-
RSRC_PATH = 'device-
|
55
|
+
RSRC_PATH = 'device-enrollments'.freeze
|
56
56
|
|
57
57
|
# Object Model / Attributes
|
58
58
|
# See APIObject class documentation for details
|
@@ -61,9 +61,9 @@ module Jamf
|
|
61
61
|
OBJECT_MODEL = {
|
62
62
|
|
63
63
|
# @!attribute id
|
64
|
-
# @return [
|
64
|
+
# @return [String]
|
65
65
|
id: {
|
66
|
-
class: :
|
66
|
+
class: :j_id,
|
67
67
|
identifier: :primary,
|
68
68
|
readonly: true
|
69
69
|
},
|
@@ -76,15 +76,15 @@ module Jamf
|
|
76
76
|
},
|
77
77
|
|
78
78
|
# @!attribute supervisionIdentityId
|
79
|
-
# @return [
|
79
|
+
# @return [String]
|
80
80
|
supervisionIdentityId: {
|
81
|
-
class: :
|
81
|
+
class: :j_id
|
82
82
|
},
|
83
83
|
|
84
84
|
# @!attribute siteId
|
85
|
-
# @return [
|
85
|
+
# @return [String]
|
86
86
|
siteId: {
|
87
|
-
class: :
|
87
|
+
class: :j_id
|
88
88
|
},
|
89
89
|
|
90
90
|
# @!attribute serverName
|
@@ -140,7 +140,7 @@ module Jamf
|
|
140
140
|
|
141
141
|
DEVICES_RSRC = 'devices'.freeze
|
142
142
|
|
143
|
-
SYNC_RSRC = '
|
143
|
+
SYNC_RSRC = 'syncs'.freeze
|
144
144
|
|
145
145
|
LATEST_RSRC = 'latest'.freeze
|
146
146
|
|
@@ -279,7 +279,7 @@ module Jamf
|
|
279
279
|
instance_id = valid_id instance_ident, cnx: cnx
|
280
280
|
raise Jamf::NoSuchItemError "No DeviceEnrollment instance matches '#{instance_ident}'" unless instance_id
|
281
281
|
|
282
|
-
rsrc = "#{RSRC_VERSION}/#{RSRC_PATH}/#{
|
282
|
+
rsrc = "#{RSRC_VERSION}/#{RSRC_PATH}/#{instance_id}/#{SYNC_RSRC}"
|
283
283
|
rsrc += "/#{LATEST_RSRC}" if latest
|
284
284
|
else
|
285
285
|
rsrc = "#{RSRC_VERSION}/#{RSRC_PATH}/#{SYNC_RSRC}"
|
@@ -293,14 +293,14 @@ module Jamf
|
|
293
293
|
|
294
294
|
# disown one or more serial numbers from a given DeviceEnrollment instance
|
295
295
|
#
|
296
|
-
# @param sns[Array<String>] One or more serial numbers to disown
|
296
|
+
# @param sns[String, Array<String>] One or more serial numbers to disown
|
297
297
|
#
|
298
298
|
# @param from_instance [Integer, String] the id or name of the instance
|
299
299
|
# from which to disown the serial numbers
|
300
300
|
#
|
301
301
|
# @param cnx[Jamf::Connection] The API connection to use
|
302
302
|
#
|
303
|
-
# @return [
|
303
|
+
# @return [Hash] The SNs as keys and 'SUCESS' or 'FAILED' as values
|
304
304
|
#
|
305
305
|
def self.disown(*sns, from_instance:, cnx: Jamf.cnx)
|
306
306
|
instance_id = valid_id from_instance, cnx: cnx
|
@@ -311,14 +311,14 @@ module Jamf
|
|
311
311
|
data = { devices: sns }
|
312
312
|
disown_rsrc = "#{self.class::RSRC_VERSION}/#{self.class::RSRC_PATH}/#{instance_id}/#{DISOWN_RSRC}"
|
313
313
|
|
314
|
-
cnx.post(disown_rsrc, data)
|
314
|
+
cnx.post(disown_rsrc, data)[:devices]
|
315
315
|
end
|
316
316
|
|
317
317
|
# Private Class Methods
|
318
318
|
###############################################
|
319
319
|
|
320
320
|
# Private, used by the .devices class method
|
321
|
-
def self.fetch_devices(instance_ident, refresh, cnx)
|
321
|
+
def self.fetch_devices(instance_ident = nil, refresh, cnx)
|
322
322
|
if instance_ident
|
323
323
|
instance_id = valid_id instance_ident, cnx: cnx
|
324
324
|
raise Jamf::NoSuchItemError, "No DeviceEnrollment instance matches '#{instance_ident}'" unless instance_id
|
@@ -51,9 +51,11 @@ module Jamf
|
|
51
51
|
# Constants
|
52
52
|
#####################################
|
53
53
|
|
54
|
-
RSRC_VERSION = '
|
54
|
+
RSRC_VERSION = 'v2'.freeze
|
55
55
|
|
56
|
-
RSRC_PATH = 'inventory-preload'.freeze
|
56
|
+
RSRC_PATH = 'inventory-preload/records'.freeze
|
57
|
+
|
58
|
+
CHANGE_LOG_RSRC = "#{RSRC_VERSION}/inventory-preload/history".freeze
|
57
59
|
|
58
60
|
DEVICE_TYPE_COMPUTER = 'Computer'.freeze
|
59
61
|
DEVICE_TYPE_MOBILE_DEV = 'Mobile Device'.freeze
|
@@ -77,7 +79,7 @@ module Jamf
|
|
77
79
|
# @!attribute [r] id
|
78
80
|
# @return [Integer]
|
79
81
|
id: {
|
80
|
-
class: :
|
82
|
+
class: :j_id,
|
81
83
|
identifier: :primary,
|
82
84
|
readonly: true
|
83
85
|
},
|
@@ -219,6 +221,12 @@ module Jamf
|
|
219
221
|
class: :string
|
220
222
|
},
|
221
223
|
|
224
|
+
# @!attribute vendor
|
225
|
+
# @return [String]
|
226
|
+
vendor: {
|
227
|
+
class: :string
|
228
|
+
},
|
229
|
+
|
222
230
|
# @!attribute extensionAttributes
|
223
231
|
# @return [Jamf::InventoryPreloadExtensionAttribute]
|
224
232
|
extensionAttributes: {
|
@@ -37,7 +37,7 @@ module Jamf
|
|
37
37
|
# Constants
|
38
38
|
#####################################
|
39
39
|
|
40
|
-
RSRC_VERSION = '
|
40
|
+
RSRC_VERSION = 'v2'.freeze
|
41
41
|
|
42
42
|
RSRC_PATH = 'mobile-device-prestages'.freeze
|
43
43
|
|
@@ -50,24 +50,24 @@ module Jamf
|
|
50
50
|
# @!attribute skipSetupItems
|
51
51
|
# @return [Jamf::ComputerPrestageSkipSetupItems]
|
52
52
|
skipSetupItems: {
|
53
|
-
class:
|
53
|
+
class: :hash
|
54
54
|
},
|
55
55
|
|
56
|
-
# @!attribute
|
56
|
+
# @!attribute allowPairing
|
57
57
|
# @return [Boolean]
|
58
|
-
|
58
|
+
allowPairing: {
|
59
59
|
class: :boolean
|
60
60
|
},
|
61
61
|
|
62
|
-
# @!attribute
|
62
|
+
# @!attribute multiUser
|
63
63
|
# @return [Boolean]
|
64
|
-
|
64
|
+
multiUser: {
|
65
65
|
class: :boolean
|
66
66
|
},
|
67
67
|
|
68
|
-
# @!attribute
|
68
|
+
# @!attribute supervised
|
69
69
|
# @return [Boolean]
|
70
|
-
|
70
|
+
supervised: {
|
71
71
|
class: :boolean
|
72
72
|
},
|
73
73
|
|
@@ -79,33 +79,35 @@ module Jamf
|
|
79
79
|
|
80
80
|
# @!attribute isAutoAdvanceSetup
|
81
81
|
# @return [Boolean]
|
82
|
-
|
82
|
+
autoAdvanceSetup: {
|
83
83
|
class: :boolean
|
84
84
|
},
|
85
85
|
|
86
|
-
# @!attribute
|
86
|
+
# @!attribute configureDeviceBeforeSetupAssistant
|
87
87
|
# @return [Boolean]
|
88
|
-
|
88
|
+
configureDeviceBeforeSetupAssistant: {
|
89
89
|
class: :boolean
|
90
90
|
},
|
91
91
|
|
92
|
-
# @!attribute language
|
93
|
-
# @return [String]
|
94
|
-
language: {
|
95
|
-
class: :string
|
96
|
-
},
|
97
|
-
|
98
|
-
# @!attribute region
|
99
|
-
# @return [String]
|
100
|
-
region: {
|
101
|
-
class: :string
|
102
|
-
},
|
103
|
-
|
104
92
|
# @!attribute names
|
105
93
|
# @return [Jamf::MobileDevicePrestageNames]
|
106
94
|
names: {
|
107
95
|
class: Jamf::MobileDevicePrestageNames
|
96
|
+
},
|
97
|
+
|
98
|
+
# @!attribute sendTimezone
|
99
|
+
# @return [Boolean]
|
100
|
+
sendTimezone: {
|
101
|
+
class: :boolean
|
102
|
+
},
|
103
|
+
|
104
|
+
# @!attribute timezone
|
105
|
+
# @return [String]
|
106
|
+
timezone: {
|
107
|
+
class: :string
|
108
108
|
}
|
109
|
+
|
110
|
+
|
109
111
|
).freeze
|
110
112
|
|
111
113
|
parse_object_model
|
@@ -41,9 +41,8 @@ module Jamf
|
|
41
41
|
# Constants
|
42
42
|
#####################################
|
43
43
|
|
44
|
-
RSRC_PATH = 'scripts'.freeze
|
45
|
-
|
46
44
|
RSRC_VERSION = 'v1'.freeze
|
45
|
+
RSRC_PATH = 'scripts'.freeze
|
47
46
|
|
48
47
|
PRIORITY_BEFORE = 'BEFORE'.freeze
|
49
48
|
PRIORITY_AFTER = 'AFTER'.freeze
|
@@ -64,35 +63,40 @@ module Jamf
|
|
64
63
|
# @!attribute [r] id
|
65
64
|
# @return [Integer]
|
66
65
|
id: {
|
67
|
-
class: :
|
66
|
+
class: :j_id,
|
68
67
|
identifier: :primary,
|
69
|
-
readonly: true
|
68
|
+
readonly: true,
|
69
|
+
filter_key: true
|
70
70
|
},
|
71
71
|
|
72
72
|
# @!attribute name
|
73
73
|
# @return [String]
|
74
74
|
name: {
|
75
75
|
class: :string,
|
76
|
-
identifier: true
|
76
|
+
identifier: true,
|
77
|
+
filter_key: true
|
77
78
|
},
|
78
79
|
|
79
80
|
# @!attribute info
|
80
81
|
# @return [String]
|
81
82
|
info: {
|
82
|
-
class: :string
|
83
|
+
class: :string,
|
84
|
+
filter_key: true
|
83
85
|
},
|
84
86
|
|
85
87
|
# @!attribute notes
|
86
88
|
# @return [String]
|
87
89
|
notes: {
|
88
|
-
class: :string
|
90
|
+
class: :string,
|
91
|
+
filter_key: true
|
89
92
|
},
|
90
93
|
|
91
94
|
# @!attribute priority
|
92
95
|
# @return [String]
|
93
96
|
priority: {
|
94
97
|
class: :string,
|
95
|
-
enum: Jamf::Script::PRIORTIES
|
98
|
+
enum: Jamf::Script::PRIORTIES,
|
99
|
+
filter_key: true
|
96
100
|
},
|
97
101
|
|
98
102
|
# TODO: Jamf should standardize object references
|
@@ -101,19 +105,22 @@ module Jamf
|
|
101
105
|
# @!attribute categoryId
|
102
106
|
# @return [Integer]
|
103
107
|
categoryId: {
|
104
|
-
class: :
|
108
|
+
class: :j_id,
|
109
|
+
filter_key: true
|
105
110
|
},
|
106
111
|
|
107
112
|
# @!attribute categoryName
|
108
113
|
# @return [String]
|
109
114
|
categoryName: {
|
110
|
-
class: :string
|
115
|
+
class: :string,
|
116
|
+
filter_key: true
|
111
117
|
},
|
112
118
|
|
113
119
|
# @!attribute osRequirements
|
114
120
|
# @return [String]
|
115
121
|
osRequirements: {
|
116
|
-
class: :string
|
122
|
+
class: :string,
|
123
|
+
filter_key: true
|
117
124
|
},
|
118
125
|
|
119
126
|
# @!attribute scriptContents
|
@@ -121,68 +128,97 @@ module Jamf
|
|
121
128
|
scriptContents: {
|
122
129
|
class: :string,
|
123
130
|
validate: :script_contents,
|
124
|
-
aliases: %i[code]
|
131
|
+
aliases: %i[code],
|
132
|
+
filter_key: true
|
125
133
|
},
|
126
134
|
|
127
135
|
# @!attribute parameter4
|
128
136
|
# @return [String]
|
129
137
|
parameter4: {
|
130
|
-
class: :string
|
138
|
+
class: :string,
|
139
|
+
filter_key: true
|
131
140
|
},
|
132
141
|
|
133
142
|
# @!attribute parameter5
|
134
143
|
# @return [String]
|
135
144
|
parameter5: {
|
136
|
-
class: :string
|
145
|
+
class: :string,
|
146
|
+
filter_key: true
|
137
147
|
},
|
138
148
|
|
139
149
|
# @!attribute parameter6
|
140
150
|
# @return [String]
|
141
151
|
parameter6: {
|
142
|
-
class: :string
|
152
|
+
class: :string,
|
153
|
+
filter_key: true
|
143
154
|
},
|
144
155
|
|
145
156
|
# @!attribute parameter7
|
146
157
|
# @return [String]
|
147
158
|
parameter7: {
|
148
|
-
class: :string
|
159
|
+
class: :string,
|
160
|
+
filter_key: true
|
149
161
|
},
|
150
162
|
|
151
163
|
# @!attribute parameter8
|
152
164
|
# @return [String]
|
153
165
|
parameter8: {
|
154
|
-
class: :string
|
166
|
+
class: :string,
|
167
|
+
filter_key: true
|
155
168
|
},
|
156
169
|
|
157
170
|
# @!attribute parameter9
|
158
171
|
# @return [String]
|
159
172
|
parameter9: {
|
160
|
-
class: :string
|
173
|
+
class: :string,
|
174
|
+
filter_key: true
|
161
175
|
},
|
162
176
|
|
163
177
|
# @!attribute parameter10
|
164
178
|
# @return [String]
|
165
179
|
parameter10: {
|
166
|
-
class: :string
|
180
|
+
class: :string,
|
181
|
+
filter_key: true
|
167
182
|
},
|
168
183
|
|
169
184
|
# @!attribute parameter11
|
170
185
|
# @return [String]
|
171
186
|
parameter11: {
|
172
|
-
class: :string
|
187
|
+
class: :string,
|
188
|
+
filter_key: true
|
173
189
|
}
|
174
190
|
}.freeze
|
175
191
|
|
176
192
|
parse_object_model
|
177
193
|
|
178
|
-
|
179
194
|
# Class Methods
|
180
195
|
##################################
|
181
196
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
197
|
+
# Retrieve a script's code without instantiating
|
198
|
+
#
|
199
|
+
# Specify an ident key, either id: or name: and the
|
200
|
+
# value for that ident
|
201
|
+
# e.g. `download id: 123` or `download name: 'myscript'`
|
202
|
+
#
|
203
|
+
# @param cnx [Jamf::Connection] The connection to use, default: Jamf.cnx
|
204
|
+
#
|
205
|
+
# @return [String] The code of the desired script
|
206
|
+
#
|
207
|
+
def self.download(cnx: Jamf.cnx, **ident_and_val)
|
208
|
+
ident, value = ident_and_val.first
|
209
|
+
if ident == :id
|
210
|
+
begin
|
211
|
+
return cnx.download "#{rsrc_path}/#{value}/download"
|
212
|
+
rescue => e
|
213
|
+
raise Jamf::NoSuchItemError, "No script with #{ident} = #{value}" if e.httpStatus == 404
|
214
|
+
|
215
|
+
raise e
|
216
|
+
end # begin
|
217
|
+
end # if
|
218
|
+
id = raw_data(cnx: cnx, **ident_and_val)&.dig(:id)
|
219
|
+
raise Jamf::NoSuchItemError, "No script with #{ident} = #{value}" unless id
|
220
|
+
|
221
|
+
cnx.download "#{rsrc_path}/#{id}/download"
|
186
222
|
end
|
187
223
|
|
188
224
|
end # class
|
@@ -32,6 +32,9 @@ module Jamf
|
|
32
32
|
#
|
33
33
|
class AppStoreCountryCodes < Jamf::SingletonResource
|
34
34
|
|
35
|
+
# Mix-Ins
|
36
|
+
#####################################
|
37
|
+
|
35
38
|
extend Jamf::Immutable
|
36
39
|
|
37
40
|
# Constants
|
@@ -48,7 +51,8 @@ module Jamf
|
|
48
51
|
countryCodes: {
|
49
52
|
class: Jamf::Country,
|
50
53
|
multi: true,
|
51
|
-
read_only: true
|
54
|
+
read_only: true,
|
55
|
+
aliases: [:list]
|
52
56
|
}
|
53
57
|
|
54
58
|
}.freeze # end OBJECT_MODEL
|
@@ -58,6 +62,12 @@ module Jamf
|
|
58
62
|
# Class Methods
|
59
63
|
#####################################
|
60
64
|
|
65
|
+
# @return [Array<Jamf::Country>] all the Countries available
|
66
|
+
#
|
67
|
+
def self.list(refresh = false, cnx: Jamf.cnx)
|
68
|
+
fetch(refresh, cnx: cnx).countryCodes
|
69
|
+
end
|
70
|
+
|
61
71
|
# Class level wrapper for #names
|
62
72
|
def self.names(refresh = false, cnx: Jamf.cnx)
|
63
73
|
fetch(refresh, cnx: cnx).names
|
@@ -93,22 +103,22 @@ module Jamf
|
|
93
103
|
|
94
104
|
# @return [Array<String>] the available country names
|
95
105
|
def names
|
96
|
-
@names ||= countryCodes.map
|
106
|
+
@names ||= countryCodes.map(&:name)
|
97
107
|
end
|
98
108
|
|
99
109
|
# @return [Array<String>] the available country codes
|
100
110
|
def codes
|
101
|
-
@codes ||= countryCodes.map
|
111
|
+
@codes ||= countryCodes.map(&:code)
|
102
112
|
end
|
103
113
|
|
104
114
|
# @return [Hash] name => code
|
105
115
|
def codes_by_name
|
106
|
-
@codes_by_name ||= countryCodes.map{ |country| [country.name, country.code] }.to_h
|
116
|
+
@codes_by_name ||= countryCodes.map { |country| [country.name, country.code] }.to_h
|
107
117
|
end
|
108
118
|
|
109
119
|
# @return [Hash] code => name
|
110
120
|
def names_by_code
|
111
|
-
@names_by_code ||= countryCodes.map{ |country| [country.code, country.name] }.to_h
|
121
|
+
@names_by_code ||= countryCodes.map { |country| [country.code, country.name] }.to_h
|
112
122
|
end
|
113
123
|
|
114
124
|
# return a country code from its name, case-insensitive
|