ruby-jss 1.2.10 → 1.5.2

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 (119) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +208 -1
  3. data/lib/jamf.rb +18 -16
  4. data/lib/jamf/api/base_classes/collection_resource.rb +613 -0
  5. data/lib/jamf/api/{abstract_classes → base_classes}/json_object.rb +110 -102
  6. data/lib/jamf/api/{abstract_classes → base_classes}/prestage.rb +56 -31
  7. data/lib/jamf/api/{abstract_classes → base_classes}/resource.rb +10 -6
  8. data/lib/jamf/api/{abstract_classes → base_classes}/singleton_resource.rb +4 -3
  9. data/lib/jamf/api/connection.rb +20 -12
  10. data/lib/jamf/api/connection/api_error.rb +8 -8
  11. data/lib/jamf/api/connection/token.rb +36 -15
  12. data/lib/jamf/api/json_objects/device_enrollment_device.rb +14 -7
  13. data/lib/jamf/api/json_objects/{location.rb → device_enrollment_device_sync_state.rb} +27 -41
  14. data/lib/jamf/api/json_objects/device_enrollment_sync_status.rb +1 -1
  15. data/lib/jamf/api/json_objects/{attachment.rb → locale.rb} +14 -23
  16. data/lib/jamf/api/json_objects/md_prestage_name.rb +1 -1
  17. data/lib/jamf/api/json_objects/md_prestage_names.rb +2 -2
  18. data/lib/jamf/api/json_objects/md_prestage_skip_setup_items.rb +50 -1
  19. data/lib/jamf/api/json_objects/prestage_assignment.rb +2 -2
  20. data/lib/jamf/api/json_objects/prestage_location.rb +3 -3
  21. data/lib/jamf/api/json_objects/prestage_purchasing_data.rb +7 -7
  22. data/lib/jamf/api/json_objects/prestage_scope.rb +1 -1
  23. data/lib/jamf/api/{resources/collection_resources → json_objects}/time_zone.rb +9 -23
  24. data/lib/jamf/api/mixins/{abstract.rb → base_class.rb} +34 -16
  25. data/lib/jamf/api/mixins/bulk_deletable.rb +27 -6
  26. data/lib/jamf/api/mixins/change_log.rb +201 -51
  27. data/lib/jamf/api/{resources/collection_resources/extension_attribute.rb → mixins/filterable.rb} +20 -14
  28. data/lib/jamf/api/mixins/pageable.rb +208 -0
  29. data/lib/jamf/api/{json_objects/installed_application.rb → mixins/sortable.rb} +33 -33
  30. data/lib/jamf/api/resources/collection_resources/building.rb +16 -9
  31. data/lib/jamf/api/resources/collection_resources/category.rb +5 -4
  32. data/lib/jamf/api/resources/collection_resources/computer_prestage.rb +12 -5
  33. data/lib/jamf/api/resources/collection_resources/department.rb +1 -3
  34. data/lib/jamf/api/resources/collection_resources/device_enrollment.rb +13 -13
  35. data/lib/jamf/api/resources/collection_resources/inventory_preload_record.rb +11 -3
  36. data/lib/jamf/api/resources/collection_resources/mobile_device_prestage.rb +25 -23
  37. data/lib/jamf/api/resources/collection_resources/script.rb +61 -25
  38. data/lib/jamf/api/resources/singleton_resources/app_store_country_codes.rb +15 -5
  39. data/lib/jamf/api/resources/singleton_resources/locales.rb +155 -0
  40. data/lib/jamf/api/resources/singleton_resources/time_zones.rb +213 -0
  41. data/lib/jamf/configuration.rb +7 -9
  42. data/lib/jamf/ruby_extensions.rb +1 -0
  43. data/lib/jamf/ruby_extensions/array.rb +1 -1
  44. data/lib/jamf/ruby_extensions/array/utils.rb +3 -3
  45. data/lib/jamf/{api/resources/collection_resources/computer.rb → ruby_extensions/dig.rb} +22 -19
  46. data/lib/jamf/validate.rb +63 -24
  47. data/lib/jamf/version.rb +1 -1
  48. data/lib/jss.rb +4 -1
  49. data/lib/jss/api_connection.rb +111 -433
  50. data/lib/jss/api_object.rb +16 -13
  51. data/lib/jss/api_object/advanced_search.rb +27 -26
  52. data/lib/jss/api_object/app_store_country_codes.rb +298 -0
  53. data/lib/jss/api_object/categorizable.rb +1 -1
  54. data/lib/jss/api_object/computer.rb +13 -0
  55. data/lib/jss/api_object/configuration_profile.rb +60 -4
  56. data/lib/jss/api_object/directory_binding.rb +273 -0
  57. data/lib/jss/api_object/directory_binding_type.rb +96 -0
  58. data/lib/jss/api_object/directory_binding_type/active_directory.rb +539 -0
  59. data/lib/jss/api_object/directory_binding_type/admitmac.rb +594 -0
  60. data/lib/jss/api_object/directory_binding_type/centrify.rb +226 -0
  61. data/lib/jss/api_object/directory_binding_type/open_directory.rb +178 -0
  62. data/lib/jss/api_object/directory_binding_type/powerbroker_identity_services.rb +73 -0
  63. data/lib/jss/api_object/disk_encryption_configurations.rb +114 -0
  64. data/lib/jss/api_object/distribution_point.rb +97 -37
  65. data/lib/jss/api_object/dock_item.rb +143 -0
  66. data/lib/jss/api_object/ebook.rb +1 -2
  67. data/lib/jss/api_object/extendable.rb +1 -1
  68. data/lib/jss/api_object/extension_attribute.rb +4 -3
  69. data/lib/jss/api_object/group.rb +33 -2
  70. data/lib/jss/api_object/mac_application.rb +107 -8
  71. data/lib/jss/api_object/mobile_device_application.rb +12 -0
  72. data/lib/jss/api_object/network_segment.rb +195 -70
  73. data/lib/jss/api_object/package.rb +105 -40
  74. data/lib/jss/api_object/patch_source.rb +10 -9
  75. data/lib/jss/api_object/policy.rb +596 -32
  76. data/lib/jss/api_object/printer.rb +446 -0
  77. data/lib/jss/api_object/scopable.rb +10 -15
  78. data/lib/jss/api_object/scopable/scope.rb +371 -55
  79. data/lib/jss/api_object/self_servable.rb +17 -9
  80. data/lib/jss/api_object/uploadable.rb +1 -1
  81. data/lib/jss/api_object/user.rb +42 -1
  82. data/lib/jss/api_object/vpp_account.rb +209 -0
  83. data/lib/jss/api_object/vppable.rb +169 -13
  84. data/lib/jss/composer.rb +1 -1
  85. data/lib/jss/exceptions.rb +3 -0
  86. data/lib/jss/server.rb +15 -0
  87. data/lib/jss/utility.rb +143 -52
  88. data/lib/jss/validate.rb +53 -10
  89. data/lib/jss/version.rb +1 -1
  90. metadata +56 -61
  91. data/lib/jamf/api/abstract_classes/advanced_search.rb +0 -86
  92. data/lib/jamf/api/abstract_classes/collection_resource.rb +0 -433
  93. data/lib/jamf/api/abstract_classes/generic_reference.rb +0 -145
  94. data/lib/jamf/api/abstract_classes/prestage_skip_setup_items.rb +0 -126
  95. data/lib/jamf/api/json_objects/account_prefs.rb +0 -79
  96. data/lib/jamf/api/json_objects/android_details.rb +0 -139
  97. data/lib/jamf/api/json_objects/appletv_details.rb +0 -110
  98. data/lib/jamf/api/json_objects/cellular_network.rb +0 -151
  99. data/lib/jamf/api/json_objects/computer_prestage_skip_setup_items.rb +0 -67
  100. data/lib/jamf/api/json_objects/criterion.rb +0 -152
  101. data/lib/jamf/api/json_objects/extension_attribute_value.rb +0 -128
  102. data/lib/jamf/api/json_objects/installed_certificate.rb +0 -53
  103. data/lib/jamf/api/json_objects/installed_configuration_profile.rb +0 -67
  104. data/lib/jamf/api/json_objects/installed_ebook.rb +0 -58
  105. data/lib/jamf/api/json_objects/installed_provisioning_profile.rb +0 -59
  106. data/lib/jamf/api/json_objects/ios_details.rb +0 -244
  107. data/lib/jamf/api/json_objects/mobile_device_details.rb +0 -219
  108. data/lib/jamf/api/json_objects/mobile_device_security.rb +0 -101
  109. data/lib/jamf/api/json_objects/purchasing_data.rb +0 -125
  110. data/lib/jamf/api/mixins/locatable.rb +0 -124
  111. data/lib/jamf/api/mixins/referable.rb +0 -92
  112. data/lib/jamf/api/resources/collection_resources/account.rb +0 -163
  113. data/lib/jamf/api/resources/collection_resources/advanced_mobile_device_search.rb +0 -52
  114. data/lib/jamf/api/resources/collection_resources/advanced_user_search.rb +0 -52
  115. data/lib/jamf/api/resources/collection_resources/mobile_device.rb +0 -315
  116. data/lib/jamf/api/resources/collection_resources/site.rb +0 -77
  117. data/lib/jamf/api/resources/singleton_resources/authorization.rb +0 -88
  118. data/lib/jamf/api/resources/singleton_resources/client_checkin_settings.rb +0 -139
  119. data/lib/jamf/api/resources/singleton_resources/reenrollment_settings.rb +0 -95
@@ -1,219 +0,0 @@
1
- # Copyright 2020 Pixar
2
-
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "Apache License")
5
- # with the following modification; you may not use this file except in
6
- # compliance with the Apache License and the following modification to it:
7
- # Section 6. Trademarks. is deleted and replaced with:
8
- #
9
- # 6. Trademarks. This License does not grant permission to use the trade
10
- # names, trademarks, service marks, or product names of the Licensor
11
- # and its affiliates, except as required to comply with Section 4(c) of
12
- # the License and to reproduce the content of the NOTICE file.
13
- #
14
- # You may obtain a copy of the Apache License at
15
- #
16
- # http://www.apache.org/licenses/LICENSE-2.0
17
- #
18
- # Unless required by applicable law or agreed to in writing, software
19
- # distributed under the Apache License with the above modification is
20
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
- # KIND, either express or implied. See the Apache License for the specific
22
- # language governing permissions and limitations under the Apache License.
23
- #
24
- #
25
-
26
- # The module
27
- module Jamf
28
-
29
- # Classes
30
- #####################################
31
-
32
- # details of a mob dev
33
- class MobileDeviceDetails < Jamf::JSONObject
34
-
35
- # Mixins
36
- #####################################
37
-
38
- # Class Constants
39
- #####################################
40
-
41
- OBJECT_MODEL = {
42
-
43
- # @!attribute [r] id
44
- # @return [Integer]
45
- id: {
46
- class: :integer,
47
- identifier: :primary,
48
- readonly: true
49
- },
50
-
51
- # @!attribute [r] name
52
- # This is readonly becuase the name attribute of
53
- # the enclosing MobileDevice is used.
54
- # @return [String]
55
- name: {
56
- class: :string,
57
- readonly: true
58
- },
59
-
60
- # @!attribute assetTag
61
- # @param [String]
62
- # @return [String]
63
- assetTag: {
64
- class: :string
65
- # TODO: make this an identifier?
66
- },
67
-
68
- # @!attribute [r] lastInventoryUpdateTimestamp
69
- # @return [String]
70
- lastInventoryUpdateTimestamp: {
71
- class: Jamf::Timestamp,
72
- aliases: [:lastInventoryUpdate],
73
- readonly: true
74
- },
75
-
76
- # @!attribute [r] osVersion
77
- # @return [String]
78
- osVersion: {
79
- class: :string,
80
- readonly: true
81
- },
82
-
83
- # @!attribute [r] osBuild
84
- # @return [String]
85
- osBuild: {
86
- class: :string,
87
- readonly: true
88
- },
89
-
90
- # @!attribute [r] serialNumber
91
- # @param [String]
92
- # @return [String]
93
- serialNumber: {
94
- class: :string,
95
- identifier: true,
96
- readonly: true
97
- },
98
-
99
- # @!attribute [r] udid
100
- # @param [String]
101
- # @return [String]
102
- udid: {
103
- class: :string,
104
- identifier: true,
105
- readonly: true
106
- },
107
-
108
- # @!attribute [r] ipAddress
109
- # @return [Jamf::IPAddress]
110
- ipAddress: {
111
- class: Jamf::IPAddress,
112
- readonly: true
113
- },
114
-
115
- # @!attribute [r] wifiMacAddress
116
- # @param [String]
117
- # @return [String]
118
- wifiMacAddress: {
119
- class: :string,
120
- identifier: true,
121
- readonly: true
122
- },
123
-
124
- # @!attribute [r] bluetoothMacAddress
125
- # @return [String]
126
- bluetoothMacAddress: {
127
- class: :string,
128
- readonly: true
129
- },
130
-
131
- # @!attribute [r] isManaged
132
- # see Jamf::MobileDevice#unmanage
133
- # @return [Boolean]
134
- isManaged: {
135
- class: :boolean,
136
- readonly: true
137
- },
138
-
139
- # @!attribute [r] initialEntryTimestamp
140
- # @return [Jamf::Timestamp]
141
- initialEntryTimestamp: {
142
- class: Jamf::Timestamp,
143
- readonly: true,
144
- aliases: %i[initialEntry firstEnrolled]
145
- },
146
-
147
- # @!attribute [r] lastEnrollmentTimestamp
148
- # @return [Boolean]
149
- lastEnrollmentTimestamp: {
150
- class: Jamf::Timestamp,
151
- readonly: true,
152
- aliases: %i[lastEnrollment lastEnrolled]
153
- },
154
-
155
- # @!attribute deviceOwnershipLevel
156
- # @return [String]
157
- deviceOwnershipLevel: {
158
- class: :string,
159
- readonly: true
160
- },
161
-
162
- # @!attribute site
163
- # @param @see Jamf::Site::Reference#initialize
164
- # @return [Jamf::Site::Reference]
165
- site: {
166
- class: Jamf::Site::Reference
167
- },
168
-
169
- # @!attribute [r] extensionAttributes
170
- # see Jamf::Extendable
171
- # @return [Array<Jamf::ExtensionAttribute::Value>]
172
- extensionAttributes: {
173
- class: Jamf::ExtensionAttributeValue,
174
- multi: true,
175
- readonly: true
176
- },
177
-
178
- # @!attribute [r] location
179
- # see Jamf::Locatable
180
- # @return [Jamf::Location]
181
- location: {
182
- class: Jamf::Location
183
- },
184
-
185
- # @!attribute [r] ios
186
- # @return [Jamf::MobileDevice::IosDetails]
187
- ios: {
188
- class: Jamf::IosDetails,
189
- readonly: true
190
- },
191
-
192
- # @!attribute [r] appleTv
193
- # @return [Jamf::MobileDevice::AppleTvDetails]
194
- appleTv: {
195
- class: Jamf::AppleTVDetails,
196
- readonly: true
197
- },
198
-
199
- # @!attribute [r] android
200
- # @return [Jamf::MobileDevice::AndroidDetails]
201
- android: {
202
- class: Jamf::AndroidDetails,
203
- readonly: true
204
- }
205
-
206
- }.freeze
207
- parse_object_model
208
-
209
- # Class Methods
210
- ###################################################
211
-
212
- def self.fetch(id, cnx)
213
- data = cnx.get "#{Jamf::MobileDevice::RSRC_PATH}/#{id}/detail"
214
- new data, cnx: cnx
215
- end
216
-
217
- end # class Mobile Device Details
218
-
219
- end # module
@@ -1,101 +0,0 @@
1
- # Copyright 2020 Pixar
2
-
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "Apache License")
5
- # with the following modification; you may not use this file except in
6
- # compliance with the Apache License and the following modification to it:
7
- # Section 6. Trademarks. is deleted and replaced with:
8
- #
9
- # 6. Trademarks. This License does not grant permission to use the trade
10
- # names, trademarks, service marks, or product names of the Licensor
11
- # and its affiliates, except as required to comply with Section 4(c) of
12
- # the License and to reproduce the content of the NOTICE file.
13
- #
14
- # You may obtain a copy of the Apache License at
15
- #
16
- # http://www.apache.org/licenses/LICENSE-2.0
17
- #
18
- # Unless required by applicable law or agreed to in writing, software
19
- # distributed under the Apache License with the above modification is
20
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
- # KIND, either express or implied. See the Apache License for the specific
22
- # language governing permissions and limitations under the Apache License.
23
- #
24
- #
25
-
26
- # The module
27
- module Jamf
28
-
29
- # The collection of security settings for a device
30
- class MobileDeviceSecurity < Jamf::JSONObject
31
-
32
- OBJECT_MODEL = {
33
-
34
- # @!attribute [r] isDataProtected
35
- # @return [Boolean]
36
- isDataProtected: {
37
- class: :boolean,
38
- readonly: true
39
- },
40
-
41
- # @!attribute [r] isBlockLevelEncryptionCapable
42
- # @return [Boolean]
43
- isBlockLevelEncryptionCapable: {
44
- class: :boolean,
45
- readonly: true
46
- },
47
-
48
- # @!attribute [r] isFileLevelEncryptionCapable
49
- # @return [Boolean]
50
- isFileLevelEncryptionCapable: {
51
- class: :boolean,
52
- readonly: true
53
- },
54
-
55
- # @!attribute [r] isPasscodePresent
56
- # @return [Boolean]
57
- isPasscodePresent: {
58
- class: :boolean,
59
- readonly: true
60
- },
61
-
62
- # @!attribute [r] isPasscodeCompliant
63
- # @return [Boolean]
64
- isPasscodeCompliant: {
65
- class: :boolean,
66
- readonly: true
67
- },
68
-
69
- # @!attribute [r] isPasscodeCompliantWithProfile
70
- # @return [Boolean]
71
- isPasscodeCompliantWithProfile: {
72
- class: :boolean,
73
- readonly: true
74
- },
75
-
76
- # @!attribute [r] hardwareEncryption
77
- # @return [Integer]
78
- hardwareEncryption: {
79
- class: :integer,
80
- readonly: true
81
- },
82
-
83
- # @!attribute [r] isActivationLockEnabled
84
- # @return [Boolean]
85
- isActivationLockEnabled: {
86
- class: :boolean,
87
- readonly: true
88
- },
89
-
90
- # @!attribute [r] isJailBreakDetected
91
- # @return [Boolean]
92
- isJailBreakDetected: {
93
- class: :boolean,
94
- readonly: true
95
- }
96
- }.freeze
97
- parse_object_model
98
-
99
- end # class Mobile Device security
100
-
101
- end # module
@@ -1,125 +0,0 @@
1
- # Copyright 2020 Pixar
2
-
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "Apache License")
5
- # with the following modification; you may not use this file except in
6
- # compliance with the Apache License and the following modification to it:
7
- # Section 6. Trademarks. is deleted and replaced with:
8
- #
9
- # 6. Trademarks. This License does not grant permission to use the trade
10
- # names, trademarks, service marks, or product names of the Licensor
11
- # and its affiliates, except as required to comply with Section 4(c) of
12
- # the License and to reproduce the content of the NOTICE file.
13
- #
14
- # You may obtain a copy of the Apache License at
15
- #
16
- # http://www.apache.org/licenses/LICENSE-2.0
17
- #
18
- # Unless required by applicable law or agreed to in writing, software
19
- # distributed under the Apache License with the above modification is
20
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
- # KIND, either express or implied. See the Apache License for the specific
22
- # language governing permissions and limitations under the Apache License.
23
- #
24
- #
25
-
26
- # The module
27
- module Jamf
28
-
29
- # A 'location' for a managed object in Jamf Pro
30
- class PurchasingData < Jamf::JSONObject
31
-
32
- # TODO: setters or an uncreated device?
33
-
34
- OBJECT_MODEL = {
35
-
36
- # @!attribute isPurchased
37
- # @param [String]
38
- # @return [String]
39
- isPurchased: {
40
- class: :boolean
41
- },
42
-
43
- # @!attribute isLeased
44
- # @param [String]
45
- # @return [String]
46
- isLeased: {
47
- class: :boolean
48
- },
49
-
50
- # @!attribute poNumber
51
- # @param [String]
52
- # @return [String]
53
- poNumber: {
54
- class: :string
55
- },
56
-
57
- # @!attribute appleCareId
58
- # @param [String]
59
- # @return [String]
60
- appleCareId: {
61
- class: :string
62
- },
63
-
64
- # @!attribute vendor
65
- # @param [String]
66
- # @return [String]
67
- vendor: {
68
- class: :string
69
- },
70
-
71
- # @!attribute purchasePrice
72
- # @param [String]
73
- # @return [String]
74
- purchasePrice: {
75
- class: :string
76
- },
77
-
78
- # @!attribute purchasingAccount
79
- # @param [String]
80
- # @return [String]
81
- purchasingAccount: {
82
- class: :string
83
- },
84
-
85
- # @!attribute poDate
86
- # @param [String]
87
- # @return [String]
88
- poDate: {
89
- class: Jamf::Timestamp
90
- },
91
-
92
- # @!attribute warrantyExpiresDate
93
- # @param [String]
94
- # @return [String]
95
- warrantyExpiresDate: {
96
- class: Jamf::Timestamp
97
- },
98
-
99
- # @!attribute leaseExpiresDate
100
- # @param [String]
101
- # @return [String]
102
- leaseExpiresDate: {
103
- class: Jamf::Timestamp
104
- },
105
-
106
- # @!attribute lifeExpectancy
107
- # @param [String]
108
- # @return [String]
109
- lifeExpectancy: {
110
- class: :integer
111
- },
112
-
113
- # @!attribute purchasingContact
114
- # @param [String]
115
- # @return [String]
116
- purchasingContact: {
117
- class: :string
118
- }
119
- }.freeze
120
-
121
- parse_object_model
122
-
123
- end # class location
124
-
125
- end # module
@@ -1,124 +0,0 @@
1
- # Copyright 2020 Pixar
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "Apache License")
4
- # with the following modification; you may not use this file except in
5
- # compliance with the Apache License and the following modification to it:
6
- # Section 6. Trademarks. is deleted and replaced with:
7
- #
8
- # 6. Trademarks. This License does not grant permission to use the trade
9
- # names, trademarks, service marks, or product names of the Licensor
10
- # and its affiliates, except as required to comply with Section 4(c) of
11
- # the License and to reproduce the content of the NOTICE file.
12
- #
13
- # You may obtain a copy of the Apache License at
14
- #
15
- # http://www.apache.org/licenses/LICENSE-2.0
16
- #
17
- # Unless required by applicable law or agreed to in writing, software
18
- # distributed under the Apache License with the above modification is
19
- # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20
- # KIND, either express or implied. See the Apache License for the specific
21
- # language governing permissions and limitations under the Apache License.
22
- #
23
- #
24
-
25
- module Jamf
26
-
27
- # Classes mixing this in have a Jamf::Location instance in their :location
28
- # attribute.
29
- #
30
- # See the Jamf::JSONObject docs for OBJECT_MODEL for defining the
31
- # :location attribute. It should always be marked `readonly: true`,
32
- # since attempting to set the location as a whole will raise an error.
33
- #
34
- # Instead of setting it as a whole, you must use the Jamf::Location object
35
- # stored in the :location attribute to access it's values, like so:
36
- #
37
- # mycomputer.location.department # => 'Muggle Studies'
38
- # mycomputer.location.room = 'Great Hall'
39
- #
40
- # All location attributes can be set that way, but building, room, department,
41
- # & phoneNumber are more related to the physical location, so must be used
42
- # that way.
43
- #
44
- # The other attributes, username, realName, position, and emailAddress, are
45
- # more related to the assinged user than the physical location, and are also
46
- # acessible via the #user method, which returns a simple wrapper for those
47
- # attributes, like this:
48
- #
49
- # mycomputer.user.name # => 'adumble' user.username works too
50
- # mycomputer.user.realName = 'Albus Dumbledore'
51
- # mycomputer.user.position = 'Headmaster'
52
- # mycomputer.user.emailAddress = 'adumble@hogwarts.edu.uk'
53
- #
54
- # are more related to the machine and its physical location
55
- # than to the user responsible for the machine.
56
- #
57
- module Locatable
58
-
59
- def location=(_loc)
60
- raise Jamf::UnsupportedError, 'Location cannot be set as a whole, set its attributes individually'
61
- end
62
-
63
- def user
64
- @location_user ||= Jamf::Locatable::User.new(self)
65
- end
66
-
67
- # a class for user-specific data in a Location object
68
- class User
69
-
70
- def initialize(assigned_object)
71
- @assigned_object = assigned_object
72
- end
73
-
74
- def username
75
- @assigned_object.location.username
76
- end
77
- alias name username
78
-
79
- def username=(val)
80
- @assigned_object.location.username = val
81
- end
82
- alias name= username=
83
-
84
- def realName
85
- @assigned_object.location.realName
86
- end
87
-
88
- def realName=(val)
89
- @assigned_object.location.realName = val
90
- end
91
-
92
- def emailAddress
93
- @assigned_object.location.emailAddress
94
- end
95
-
96
- def emailAddress=(val)
97
- @assigned_object.location.emailAddress = val
98
- end
99
-
100
- def position
101
- @assigned_object.location.position
102
- end
103
-
104
- def position=(val)
105
- @assigned_object.location.position = val
106
- end
107
-
108
- # Remove large cached items from
109
- # the instance_variables used to create
110
- # pretty-print (pp) output.
111
- #
112
- # @return [Array] the desired instance_variables
113
- #
114
- def pretty_print_instance_variables
115
- vars = instance_variables.sort
116
- vars.delete :@assigned_object
117
- vars
118
- end
119
-
120
- end # class user
121
-
122
- end # locatable
123
-
124
- end # Jamf