ruby-jss 1.2.4a4 → 1.3.3

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.
Files changed (248) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +185 -1
  3. data/README.md +3 -1
  4. data/bin/cgrouper +1 -1
  5. data/bin/jamfHelperBackgrounder +1 -1
  6. data/bin/netseg-update +1 -1
  7. data/data/ruby-jss.conf.example +1 -1
  8. data/lib/jamf.rb +1 -1
  9. data/lib/jamf/api/abstract_classes/advanced_search.rb +1 -1
  10. data/lib/jamf/api/abstract_classes/collection_resource.rb +31 -26
  11. data/lib/jamf/api/abstract_classes/generic_reference.rb +1 -1
  12. data/lib/jamf/api/abstract_classes/json_object.rb +15 -5
  13. data/lib/jamf/api/abstract_classes/prestage.rb +2 -2
  14. data/lib/jamf/api/abstract_classes/prestage_skip_setup_items.rb +1 -1
  15. data/lib/jamf/api/abstract_classes/resource.rb +1 -1
  16. data/lib/jamf/api/abstract_classes/singleton_resource.rb +1 -1
  17. data/lib/jamf/api/attribute_classes/ip_address.rb +1 -1
  18. data/lib/jamf/api/attribute_classes/timestamp.rb +1 -1
  19. data/lib/jamf/api/connection.rb +106 -60
  20. data/lib/jamf/api/connection/api_error.rb +1 -1
  21. data/lib/jamf/api/connection/api_error_styleguide.rb +1 -1
  22. data/lib/jamf/api/connection/token.rb +80 -13
  23. data/lib/jamf/api/json_objects/account_prefs.rb +1 -1
  24. data/lib/jamf/api/json_objects/android_details.rb +1 -1
  25. data/lib/jamf/api/json_objects/appletv_details.rb +1 -1
  26. data/lib/jamf/api/json_objects/attachment.rb +1 -1
  27. data/lib/jamf/api/json_objects/cellular_network.rb +1 -1
  28. data/lib/jamf/api/json_objects/change_log_entry.rb +1 -1
  29. data/lib/jamf/api/json_objects/computer_prestage_skip_setup_items.rb +1 -1
  30. data/lib/jamf/api/json_objects/country.rb +1 -1
  31. data/lib/jamf/api/json_objects/criterion.rb +1 -1
  32. data/lib/jamf/api/json_objects/device_enrollment_device.rb +1 -1
  33. data/lib/jamf/api/json_objects/device_enrollment_sync_status.rb +1 -1
  34. data/lib/jamf/api/json_objects/extension_attribute_value.rb +1 -1
  35. data/lib/jamf/api/json_objects/installed_application.rb +1 -1
  36. data/lib/jamf/api/json_objects/installed_certificate.rb +1 -1
  37. data/lib/jamf/api/json_objects/installed_configuration_profile.rb +1 -1
  38. data/lib/jamf/api/json_objects/installed_ebook.rb +1 -1
  39. data/lib/jamf/api/json_objects/installed_provisioning_profile.rb +1 -1
  40. data/lib/jamf/api/json_objects/inventory_preload_extension_attribute.rb +1 -1
  41. data/lib/jamf/api/json_objects/ios_details.rb +1 -1
  42. data/lib/jamf/api/json_objects/location.rb +1 -1
  43. data/lib/jamf/api/json_objects/md_prestage_name.rb +1 -1
  44. data/lib/jamf/api/json_objects/md_prestage_names.rb +1 -1
  45. data/lib/jamf/api/json_objects/md_prestage_skip_setup_items.rb +1 -1
  46. data/lib/jamf/api/json_objects/mobile_device_details.rb +1 -1
  47. data/lib/jamf/api/json_objects/mobile_device_security.rb +1 -1
  48. data/lib/jamf/api/json_objects/prestage_assignment.rb +1 -1
  49. data/lib/jamf/api/json_objects/prestage_location.rb +1 -1
  50. data/lib/jamf/api/json_objects/prestage_purchasing_data.rb +1 -1
  51. data/lib/jamf/api/json_objects/prestage_scope.rb +1 -1
  52. data/lib/jamf/api/json_objects/prestage_sync_status.rb +1 -1
  53. data/lib/jamf/api/json_objects/purchasing_data.rb +1 -1
  54. data/lib/jamf/api/mixins/abstract.rb +1 -1
  55. data/lib/jamf/api/mixins/bulk_deletable.rb +1 -1
  56. data/lib/jamf/api/mixins/change_log.rb +1 -1
  57. data/lib/jamf/api/mixins/extendable.rb +1 -1
  58. data/lib/jamf/api/mixins/immutable.rb +1 -1
  59. data/lib/jamf/api/mixins/locatable.rb +1 -1
  60. data/lib/jamf/api/mixins/lockable.rb +1 -1
  61. data/lib/jamf/api/mixins/referable.rb +1 -1
  62. data/lib/jamf/api/mixins/searchable.rb +1 -1
  63. data/lib/jamf/api/mixins/uncreatable.rb +1 -1
  64. data/lib/jamf/api/mixins/undeletable.rb +1 -1
  65. data/lib/jamf/api/resources/collection_resources/account.rb +1 -1
  66. data/lib/jamf/api/resources/collection_resources/advanced_mobile_device_search.rb +1 -1
  67. data/lib/jamf/api/resources/collection_resources/advanced_user_search.rb +1 -1
  68. data/lib/jamf/api/resources/collection_resources/building.rb +1 -1
  69. data/lib/jamf/api/resources/collection_resources/category.rb +1 -1
  70. data/lib/jamf/api/resources/collection_resources/computer.rb +1 -1
  71. data/lib/jamf/api/resources/collection_resources/computer_prestage.rb +1 -1
  72. data/lib/jamf/api/resources/collection_resources/department.rb +1 -1
  73. data/lib/jamf/api/resources/collection_resources/device_enrollment.rb +1 -1
  74. data/lib/jamf/api/resources/collection_resources/extension_attribute.rb +1 -1
  75. data/lib/jamf/api/resources/collection_resources/inventory_preload_record.rb +9 -2
  76. data/lib/jamf/api/resources/collection_resources/mobile_device.rb +1 -1
  77. data/lib/jamf/api/resources/collection_resources/mobile_device_prestage.rb +1 -1
  78. data/lib/jamf/api/resources/collection_resources/script.rb +1 -1
  79. data/lib/jamf/api/resources/collection_resources/site.rb +1 -1
  80. data/lib/jamf/api/resources/collection_resources/time_zone.rb +1 -1
  81. data/lib/jamf/api/resources/singleton_resources/app_store_country_codes.rb +1 -1
  82. data/lib/jamf/api/resources/singleton_resources/authorization.rb +1 -1
  83. data/lib/jamf/api/resources/singleton_resources/client_checkin_settings.rb +1 -1
  84. data/lib/jamf/api/resources/singleton_resources/reenrollment_settings.rb +1 -1
  85. data/lib/jamf/client.rb +1 -1
  86. data/lib/jamf/client/jamf_binary.rb +1 -1
  87. data/lib/jamf/client/jamf_helper.rb +1 -1
  88. data/lib/jamf/client/management_action.rb +1 -1
  89. data/lib/jamf/compatibility.rb +1 -1
  90. data/lib/jamf/composer.rb +1 -1
  91. data/lib/jamf/configuration.rb +8 -10
  92. data/lib/jamf/exceptions.rb +6 -1
  93. data/lib/jamf/ruby_extensions.rb +2 -1
  94. data/lib/jamf/ruby_extensions/array.rb +2 -2
  95. data/lib/jamf/ruby_extensions/array/predicates.rb +1 -1
  96. data/lib/jamf/ruby_extensions/array/utils.rb +4 -4
  97. data/lib/jamf/ruby_extensions/dig.rb +52 -0
  98. data/lib/jamf/ruby_extensions/filetest.rb +1 -1
  99. data/lib/jamf/ruby_extensions/filetest/predicates.rb +1 -1
  100. data/lib/jamf/ruby_extensions/hash.rb +1 -1
  101. data/lib/jamf/ruby_extensions/hash/backports.rb +2 -2
  102. data/lib/jamf/ruby_extensions/ipaddr.rb +1 -1
  103. data/lib/jamf/ruby_extensions/ipaddr/utils.rb +1 -1
  104. data/lib/jamf/ruby_extensions/object.rb +1 -1
  105. data/lib/jamf/ruby_extensions/object/predicates.rb +1 -1
  106. data/lib/jamf/ruby_extensions/pathname.rb +1 -1
  107. data/lib/jamf/ruby_extensions/pathname/predicates.rb +1 -1
  108. data/lib/jamf/ruby_extensions/pathname/utils.rb +1 -1
  109. data/lib/jamf/ruby_extensions/string.rb +1 -1
  110. data/lib/jamf/ruby_extensions/string/backports.rb +1 -1
  111. data/lib/jamf/ruby_extensions/string/conversions.rb +1 -1
  112. data/lib/jamf/ruby_extensions/string/predicates.rb +14 -4
  113. data/lib/jamf/utility.rb +1 -1
  114. data/lib/jamf/validate.rb +1 -1
  115. data/lib/jamf/version.rb +2 -2
  116. data/lib/jpapi.rb +1 -1
  117. data/lib/jss-api.rb +1 -1
  118. data/lib/jss.rb +5 -2
  119. data/lib/jss/api_connection.rb +3 -30
  120. data/lib/jss/api_object.rb +16 -3
  121. data/lib/jss/api_object/account.rb +1 -1
  122. data/lib/jss/api_object/advanced_search.rb +1 -1
  123. data/lib/jss/api_object/advanced_search/advanced_computer_search.rb +1 -1
  124. data/lib/jss/api_object/advanced_search/advanced_mobile_device_search.rb +1 -1
  125. data/lib/jss/api_object/advanced_search/advanced_user_search.rb +1 -1
  126. data/lib/jss/api_object/building.rb +1 -1
  127. data/lib/jss/api_object/categorizable.rb +1 -1
  128. data/lib/jss/api_object/category.rb +1 -1
  129. data/lib/jss/api_object/computer.rb +12 -6
  130. data/lib/jss/api_object/computer/application_installs.rb +1 -1
  131. data/lib/jss/api_object/computer_invitation.rb +1 -1
  132. data/lib/jss/api_object/configuration_profile.rb +4 -2
  133. data/lib/jss/api_object/configuration_profile/mobile_device_configuration_profile.rb +1 -1
  134. data/lib/jss/api_object/configuration_profile/osx_configuration_profile.rb +1 -1
  135. data/lib/jss/api_object/creatable.rb +1 -1
  136. data/lib/jss/api_object/criteriable.rb +10 -5
  137. data/lib/jss/api_object/criteriable/criteria.rb +26 -10
  138. data/lib/jss/api_object/criteriable/criterion.rb +1 -1
  139. data/lib/jss/api_object/department.rb +1 -1
  140. data/lib/jss/api_object/directory_binding.rb +273 -0
  141. data/lib/jss/api_object/directory_binding_type.rb +90 -0
  142. data/lib/jss/api_object/directory_binding_type/active_directory.rb +502 -0
  143. data/lib/jss/api_object/directory_binding_type/admitmac.rb +525 -0
  144. data/lib/jss/api_object/directory_binding_type/centrify.rb +212 -0
  145. data/lib/jss/api_object/directory_binding_type/open_directory.rb +178 -0
  146. data/lib/jss/api_object/directory_binding_type/powerbroker_identity_services.rb +73 -0
  147. data/lib/jss/api_object/disk_encryption_configurations.rb +114 -0
  148. data/lib/jss/api_object/distribution_point.rb +96 -36
  149. data/lib/jss/api_object/dock_item.rb +137 -0
  150. data/lib/jss/api_object/ebook.rb +1 -1
  151. data/lib/jss/api_object/extendable.rb +67 -28
  152. data/lib/jss/api_object/extension_attribute.rb +1 -1
  153. data/lib/jss/api_object/extension_attribute/computer_extension_attribute.rb +1 -1
  154. data/lib/jss/api_object/extension_attribute/mobile_device_extension_attribute.rb +1 -1
  155. data/lib/jss/api_object/extension_attribute/user_extension_attribute.rb +1 -1
  156. data/lib/jss/api_object/group.rb +1 -1
  157. data/lib/jss/api_object/group/computer_group.rb +1 -1
  158. data/lib/jss/api_object/group/mobile_device_group.rb +1 -1
  159. data/lib/jss/api_object/group/user_group.rb +1 -1
  160. data/lib/jss/api_object/ibeacon.rb +1 -1
  161. data/lib/jss/api_object/ldap_server.rb +1 -1
  162. data/lib/jss/api_object/locatable.rb +1 -1
  163. data/lib/jss/api_object/mac_application.rb +1 -1
  164. data/lib/jss/api_object/management_history.rb +23 -22
  165. data/lib/jss/api_object/management_history/audit_event.rb +1 -1
  166. data/lib/jss/api_object/management_history/casper_imaging_log.rb +1 -1
  167. data/lib/jss/api_object/management_history/casper_remote_log.rb +1 -1
  168. data/lib/jss/api_object/management_history/computer_usage_log.rb +1 -1
  169. data/lib/jss/api_object/management_history/ebook.rb +1 -1
  170. data/lib/jss/api_object/management_history/hashlike.rb +1 -1
  171. data/lib/jss/api_object/management_history/mac_app_store_app.rb +1 -1
  172. data/lib/jss/api_object/management_history/mdm_command.rb +1 -1
  173. data/lib/jss/api_object/management_history/mobile_device_app.rb +1 -1
  174. data/lib/jss/api_object/management_history/policy_log.rb +1 -1
  175. data/lib/jss/api_object/management_history/screen_sharing_log.rb +1 -1
  176. data/lib/jss/api_object/management_history/user_location_change.rb +1 -1
  177. data/lib/jss/api_object/matchable.rb +1 -1
  178. data/lib/jss/api_object/mdm.rb +1 -1
  179. data/lib/jss/api_object/mobile_device.rb +29 -6
  180. data/lib/jss/api_object/mobile_device_application.rb +13 -1
  181. data/lib/jss/api_object/netboot_server.rb +1 -1
  182. data/lib/jss/api_object/network_segment.rb +153 -59
  183. data/lib/jss/api_object/package.rb +106 -41
  184. data/lib/jss/api_object/patch_policy.rb +1 -1
  185. data/lib/jss/api_object/patch_source.rb +1 -1
  186. data/lib/jss/api_object/patch_source/patch_external_source.rb +1 -1
  187. data/lib/jss/api_object/patch_source/patch_internal_source.rb +1 -1
  188. data/lib/jss/api_object/patch_title.rb +1 -1
  189. data/lib/jss/api_object/patch_title/version.rb +1 -1
  190. data/lib/jss/api_object/peripheral.rb +1 -1
  191. data/lib/jss/api_object/peripheral_type.rb +1 -1
  192. data/lib/jss/api_object/policy.rb +380 -5
  193. data/lib/jss/api_object/printer.rb +440 -0
  194. data/lib/jss/api_object/purchasable.rb +1 -1
  195. data/lib/jss/api_object/removable_macaddr.rb +1 -1
  196. data/lib/jss/api_object/restricted_software.rb +1 -1
  197. data/lib/jss/api_object/scopable.rb +1 -1
  198. data/lib/jss/api_object/scopable/scope.rb +257 -37
  199. data/lib/jss/api_object/script.rb +1 -1
  200. data/lib/jss/api_object/self_servable.rb +7 -7
  201. data/lib/jss/api_object/self_servable/icon.rb +1 -1
  202. data/lib/jss/api_object/sitable.rb +6 -2
  203. data/lib/jss/api_object/site.rb +1 -1
  204. data/lib/jss/api_object/software_update_server.rb +1 -1
  205. data/lib/jss/api_object/updatable.rb +1 -1
  206. data/lib/jss/api_object/uploadable.rb +1 -1
  207. data/lib/jss/api_object/user.rb +5 -3
  208. data/lib/jss/api_object/vppable.rb +1 -1
  209. data/lib/jss/api_object/webhook.rb +1 -1
  210. data/lib/jss/client.rb +1 -1
  211. data/lib/jss/client/jamf_binary.rb +1 -1
  212. data/lib/jss/client/jamf_helper.rb +1 -1
  213. data/lib/jss/client/management_action.rb +1 -1
  214. data/lib/jss/compatibility.rb +1 -1
  215. data/lib/jss/composer.rb +2 -2
  216. data/lib/jss/configuration.rb +1 -1
  217. data/lib/jss/db_connection.rb +1 -1
  218. data/lib/jss/exceptions.rb +1 -1
  219. data/lib/jss/ruby_extensions.rb +1 -1
  220. data/lib/jss/ruby_extensions/array.rb +1 -1
  221. data/lib/jss/ruby_extensions/filetest.rb +1 -1
  222. data/lib/jss/ruby_extensions/hash.rb +1 -1
  223. data/lib/jss/ruby_extensions/ipaddr.rb +1 -1
  224. data/lib/jss/ruby_extensions/pathname.rb +1 -1
  225. data/lib/jss/ruby_extensions/string.rb +1 -1
  226. data/lib/jss/ruby_extensions/string/backports.rb +1 -1
  227. data/lib/jss/ruby_extensions/string/conversions.rb +1 -1
  228. data/lib/jss/ruby_extensions/string/predicates.rb +14 -4
  229. data/lib/jss/ruby_extensions/time.rb +1 -1
  230. data/lib/jss/server.rb +1 -1
  231. data/lib/jss/utility.rb +9 -23
  232. data/lib/jss/validate.rb +1 -1
  233. data/lib/jss/version.rb +2 -2
  234. data/lib/jss/xml_workaround.rb +1 -1
  235. data/lib/ruby-jss.rb +1 -1
  236. data/test/bin/runtests +1 -1
  237. data/test/lib/testhelper.rb +1 -1
  238. data/test/lib/testhelper/auth.rb +1 -1
  239. data/test/lib/testhelper/patch_mgmt.rb +1 -1
  240. data/test/specs/api_connection_spec.rb +1 -1
  241. data/test/specs/patch01_source_spec.rb +1 -1
  242. data/test/specs/patch02_internal_source_spec.rb +1 -1
  243. data/test/specs/patch03_external_source_spec.rb +1 -1
  244. data/test/specs/patch04_titles_spec.rb +1 -1
  245. data/test/specs/patch05_policies_spec.rb +1 -1
  246. data/test/specs/patch06_cleanup_spec.rb +1 -1
  247. data/test/specs/policy_spec.rb +1 -1
  248. metadata +15 -4
@@ -0,0 +1,440 @@
1
+ module JSS
2
+ ### Module Constants
3
+ #####################################
4
+
5
+ ### Module Variables
6
+ #####################################
7
+
8
+ ### Module Methods
9
+ #####################################
10
+
11
+ ### Classes
12
+ #####################################
13
+
14
+ ### Printer object inside JSS
15
+ ###
16
+ ### @see JSS::APIObject
17
+ class Printer < JSS::APIObject
18
+ ## Mix-Ins
19
+ #####################################
20
+ include JSS::Creatable
21
+ include JSS::Updatable
22
+ include JSS::Categorizable
23
+
24
+ ## Class Constants
25
+ #####################################
26
+
27
+ ### The base for REST resources of this class
28
+ RSRC_BASE = 'printers'.freeze
29
+
30
+ ### the hash key used for the JSON list output of all objects in the JSS
31
+ RSRC_LIST_KEY = :printers
32
+
33
+ ### The hash key used for the JSON object output
34
+ ### It's also used in various error messages
35
+ RSRC_OBJECT_KEY = :printer
36
+
37
+ # Where is the Category in the API JSON?
38
+ CATEGORY_SUBSET = :top
39
+
40
+ # How is the category stored in the API data?
41
+ CATEGORY_DATA_TYPE = String
42
+
43
+ ## Attributes
44
+ #####################################
45
+
46
+ ### @return [String] The URI path for the specific printer.
47
+ attr_reader :uri
48
+
49
+ ### @return [String] The CUPs name to be used
50
+ attr_reader :CUPS_name
51
+
52
+ ### @return [String] The physical location of the printer.
53
+ attr_reader :location
54
+
55
+ ### @return [String] The specific model of printer.
56
+ attr_reader :model
57
+
58
+ ### @return [Boolean] Is this printer to be shared?
59
+ attr_reader :shared
60
+
61
+ ### @return [String] Information for this specific printer.
62
+ attr_reader :info
63
+
64
+ ### @return [String] Notes for this specific printer.
65
+ attr_reader :notes
66
+
67
+ ### @return [Boolean] Make this printer as the default printer upon installation.
68
+ attr_reader :make_default
69
+
70
+ ### @return [Boolean] Use a generic PPD.
71
+ attr_reader :use_generic
72
+
73
+ ### @return [String] The PPD file name.
74
+ attr_reader :ppd
75
+
76
+ ### @return [String] The contents of the PPD file.
77
+ attr_reader :ppd_contents
78
+
79
+ ### @return [String] The path the PPD file will be installed.
80
+ attr_reader :ppd_path
81
+
82
+ ### @return [String] The OS version requirements seperated by commas
83
+ attr_reader :os_requirements
84
+
85
+ ## Constructor
86
+ #####################################
87
+
88
+ ###
89
+ def initialize(args = {})
90
+ super args
91
+
92
+ if self.in_jss?
93
+
94
+ @uri = @init_data[:uri]
95
+ @CUPS_name = @init_data[:CUPS_name]
96
+ @location = @init_data[:location]
97
+ @model = @init_data[:model]
98
+ @shared = @init_data[:shared]
99
+ @info = @init_data[:info]
100
+ @notes = @init_data[:notes]
101
+ @make_default = @init_data[:make_default]
102
+ @use_generic = @init_data[:use_generic]
103
+ @ppd = @init_data[:ppd]
104
+ @ppd_contents = @init_data[:ppd_contents]
105
+ @ppd_path = @init_data[:ppd_path]
106
+ @os_requirements = @init_data[:os_requirements]
107
+ else
108
+
109
+ raise JSS::MissingDataError, "CUPS_name must be provided." unless !@init_data[:CUPS_name].nil?
110
+ raise JSS::MissingDataError, "uri must be provided." unless !@init_data[:uri].nil?
111
+
112
+ raise JSS::InvalidDataError, "uri must be a String." unless @init_data[:uri].is_a?(String) || @init_data[:uri].nil?
113
+ raise JSS::InvalidDataError, "CUPS_name must be a String." unless @init_data[:CUPS_name].is_a?(String)
114
+ raise JSS::InvalidDataError, "location must be a String." unless @init_data[:location].is_a?(String) || @init_data[:location].nil?
115
+ raise JSS::InvalidDataError, "model must be a String." unless @init_data[:model].is_a?(String) || @init_data[:model].nil?
116
+ raise JSS::InvalidDataError, "info must be a String." unless @init_data[:info].is_a?(String) || @init_data[:info].nil?
117
+ raise JSS::InvalidDataError, "notes must be a String." unless @init_data[:notes].is_a?(String) || @init_data[:notes].nil?
118
+ raise JSS::InvalidDataError, "ppd must be a String." unless @init_data[:ppd].is_a?(String) || @init_data[:ppd].nil?
119
+ raise JSS::InvalidDataError, "ppd_contents must be a String." unless @init_data[:ppd_contents].is_a?(String) || @init_data[:ppd_contents].nil?
120
+ raise JSS::InvalidDataError, "ppd_path must be a String." unless @init_data[:ppd_path].is_a?(String) || @init_data[:ppd_path].nil?
121
+ raise JSS::InvalidDataError, "os_requirements must be a String." unless @init_data[:os_requirements].is_a?(String) || @init_data[:os_requirements].nil?
122
+ raise JSS::InvalidDataError, "shared must be a String." unless (@init_data[:shared].is_a?(TrueClass) || @init_data[:shared].is_a?(FalseClass)) || @init_data[:shared].nil?
123
+ raise JSS::InvalidDataError, "make_default must be a String." unless (@init_data[:make_default].is_a?(TrueClass) || @init_data[:make_default].is_a?(FalseClass)) || @init_data[:make_default].nil?
124
+ raise JSS::InvalidDataError, "use_generic must be a String." unless (@init_data[:use_generic].is_a?(TrueClass) || @init_data[:use_generic].is_a?(FalseClass)) || @init_data[:use_generic].nil?
125
+
126
+ @uri = @init_data[:uri]
127
+ @CUPS_name = @init_data[:CUPS_name]
128
+ @location = @init_data[:location]
129
+ @model = @init_data[:model]
130
+ @shared = @init_data[:shared]
131
+ @info = @init_data[:info]
132
+ @notes = @init_data[:notes]
133
+ @make_default = @init_data[:make_default]
134
+ @use_generic = @init_data[:use_generic]
135
+ @ppd = @init_data[:ppd]
136
+ @ppd_contents = @init_data[:ppd_contents]
137
+ @ppd_path = @init_data[:ppd_path]
138
+ @os_requirements = @init_data[:os_requirements]
139
+ end
140
+ end
141
+
142
+
143
+ ## Class Methods
144
+ #####################################
145
+
146
+
147
+ # The URI path for the specific printer.
148
+ #
149
+ # @author Tyler Morgan
150
+ #
151
+ # @param newvalue [String]
152
+ #
153
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
154
+ #
155
+ # @return [void]
156
+ def uri=(newvalue)
157
+
158
+ raise JSS::InvalidDataError, "URI must be a string." unless newvalue.is_a? String
159
+
160
+ @uri = newvalue
161
+
162
+ @need_to_update = true
163
+ end
164
+
165
+
166
+ # The CUPs name to be used
167
+ #
168
+ # @author Tyler Morgan
169
+ #
170
+ # @param newvalue [String]
171
+ #
172
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
173
+ #
174
+ # @return [void]
175
+ def CUPS_name=(newvalue)
176
+
177
+ raise JSS::InvalidDataError, "CUPS_name must be a string." unless newvalue.is_a? String
178
+
179
+ @CUPS_name = newvalue
180
+
181
+ @need_to_update = true
182
+ end
183
+
184
+
185
+ # The physical location of the printer.
186
+ #
187
+ # @author Tyler Morgan
188
+ #
189
+ # @param newvalue [String]
190
+ #
191
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
192
+ #
193
+ # @return [void]
194
+ def location=(newvalue)
195
+
196
+ raise JSS::InvalidDataError, "location must be a string." unless newvalue.is_a? String
197
+
198
+ @location = newvalue
199
+
200
+ @need_to_update = true
201
+ end
202
+
203
+
204
+ # The specific model of printer.
205
+ #
206
+ # @author Tyler Morgan
207
+ #
208
+ # @param newvalue [String]
209
+ #
210
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
211
+ #
212
+ # @return [void]
213
+ def model=(newvalue)
214
+
215
+ raise JSS::InvalidDataError, "model must be a string." unless newvalue.is_a? String
216
+
217
+ @model = newvalue
218
+
219
+ @need_to_update = true
220
+ end
221
+
222
+
223
+ # Is this printer to be shared?
224
+ #
225
+ # @author Tyler Morgan
226
+ #
227
+ # @param newvalue [Boolean]
228
+ #
229
+ # @raise [JSS::InvalidDataError] If newvalue is not a Boolean
230
+ #
231
+ # @return [void]
232
+ def shared=(newvalue)
233
+
234
+ raise JSS::InvalidDataError, "shared must be a string." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
235
+
236
+ @shared = newvalue
237
+
238
+ @need_to_update = true
239
+ end
240
+
241
+
242
+ # Information for this specific printer.
243
+ #
244
+ # @author Tyler Morgan
245
+ #
246
+ # @param newvalue [String]
247
+ #
248
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
249
+ #
250
+ # @return [void]
251
+ def info=(newvalue)
252
+
253
+ raise JSS::InvalidDataError, "info must be a string." unless newvalue.is_a? String
254
+
255
+ @info = newvalue
256
+
257
+ @need_to_update = true
258
+ end
259
+
260
+
261
+ # Notes for this specific printer.
262
+ #
263
+ # @author Tyler Morgan
264
+ #
265
+ # @param newvalue [String]
266
+ #
267
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
268
+ #
269
+ # @return [void]
270
+ def notes=(newvalue)
271
+
272
+ raise JSS::InvalidDataError, "notes must be a string." unless newvalue.is_a? String
273
+
274
+ @notes = newvalue
275
+
276
+ @need_to_update = true
277
+ end
278
+
279
+
280
+ # Make this printer as the default printer upon installation.
281
+ #
282
+ # @author Tyler Morgan
283
+ #
284
+ # @param newvalue [Boolean]
285
+ #
286
+ # @raise [JSS::InvalidDataError] If newvalue is not a Boolean
287
+ #
288
+ # @return [void]
289
+ def make_default=(newvalue)
290
+
291
+ raise JSS::InvalidDataError, "make_default must be a string." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
292
+
293
+ @make_default = newvalue
294
+
295
+ @need_to_update = true
296
+ end
297
+
298
+
299
+ # Use a generic PPD.
300
+ #
301
+ # @author Tyler Morgan
302
+ #
303
+ # @param newvalue [Boolean]
304
+ #
305
+ # @raise [JSS::InvalidDataError] If newvalue is not a Boolean
306
+ #
307
+ # @return [void]
308
+ def use_generic=(newvalue)
309
+
310
+ raise JSS::InvalidDataError, "use_generic must be a string." unless newvalue.is_a?(TrueClass) || newvalue.is_a?(FalseClass)
311
+
312
+ @use_generic = newvalue
313
+
314
+ @need_to_update = true
315
+ end
316
+
317
+
318
+ # The PPD file name.
319
+ #
320
+ # @author Tyler Morgan
321
+ #
322
+ # @param newvalue [String]
323
+ #
324
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
325
+ #
326
+ # @return [void]
327
+ def ppd=(newvalue)
328
+
329
+ raise JSS::InvalidDataError, "ppd must be a string." unless newvalue.is_a? String
330
+
331
+ @ppd = newvalue
332
+
333
+ @need_to_update = true
334
+ end
335
+
336
+
337
+ # The contents of the PPD file.
338
+ #
339
+ # @author Tyler Morgan
340
+ #
341
+ # @param newvalue [String]
342
+ #
343
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
344
+ #
345
+ # @return [void]
346
+ def ppd_contents=(newvalue)
347
+
348
+ raise JSS::InvalidDataError, "ppd_contents must be a string." unless newvalue.is_a? String
349
+
350
+ @ppd_contents = newvalue
351
+
352
+ @need_to_update = true
353
+ end
354
+
355
+
356
+ # The path the PPD file will be installed.
357
+ #
358
+ # @author Tyler Morgan
359
+ #
360
+ # @param newvalue [String]
361
+ #
362
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
363
+ #
364
+ # @return [void]
365
+ def ppd_path=(newvalue)
366
+
367
+ raise JSS::InvalidDataError, "ppd_path must be a string." unless newvalue.is_a? String
368
+
369
+ @ppd_path = newvalue
370
+
371
+ @need_to_update = true
372
+ end
373
+
374
+
375
+ # The OS version requirements seperated by commas
376
+ #
377
+ # @author Tyler Morgan
378
+ #
379
+ # @param newvalue [String]
380
+ #
381
+ # @raise [JSS::InvalidDataError] If newvalue is not a String
382
+ #
383
+ # @example Limit Printer object to only High Sierra devices and Mojave 10.14.5 OS versions
384
+ # printer.os_requirements = "10.13.x, 10.14.5"
385
+ #
386
+ # @return [void]
387
+ def os_requirements=(newvalue)
388
+
389
+ raise JSS::InvalidDataError, "os_requirements must be a string." unless newvalue.is_a? String
390
+
391
+ @os_requirements = newvalue
392
+
393
+ @need_to_update = true
394
+ end
395
+
396
+ # Remove the various large data
397
+ # from the instance_variables used to create
398
+ # pretty-print (pp) output.
399
+ #
400
+ # @return [Array] the desired instance_variables
401
+ #
402
+ def pretty_print_instance_variables
403
+ vars = super
404
+ vars.delete :@ppd_contents
405
+ vars
406
+ end
407
+
408
+
409
+ ## Private Instance Methods
410
+ #####################################
411
+ private
412
+
413
+ ### Return the xml for creating or updating this script in the JSS
414
+ ###
415
+ def rest_xml
416
+ doc = REXML::Document.new
417
+ printer = doc.add_element 'printer'
418
+
419
+ printer.add_element('id').text = @id
420
+ printer.add_element('name').text = @name
421
+ printer.add_element('uri').text = @uri
422
+ printer.add_element('CUPS_name').text = @CUPS_name
423
+ printer.add_element('location').text = @location
424
+ printer.add_element('model').text = @model
425
+ printer.add_element('shared').text = @shared
426
+ printer.add_element('info').text = @info
427
+ printer.add_element('notes').text = @notes
428
+ printer.add_element('make_default').text = @make_default
429
+ printer.add_element('use_generic').text = @use_generic
430
+ printer.add_element('ppd').text = @ppd
431
+ printer.add_element('ppd_contents').text = @ppd_contents
432
+ printer.add_element('ppd_path').text = @ppd_path
433
+ printer.add_element('os_requirements').text = @os_requirements
434
+ add_category_to_xml(doc)
435
+
436
+ doc.to_s
437
+
438
+ end
439
+ end
440
+ end
@@ -1,4 +1,4 @@
1
- ### Copyright 2019 Pixar
1
+ ### Copyright 2020 Pixar
2
2
 
3
3
  ###
4
4
  ### Licensed under the Apache License, Version 2.0 (the "Apache License")
@@ -1,4 +1,4 @@
1
- ### Copyright 2019 Pixar
1
+ ### Copyright 2020 Pixar
2
2
 
3
3
  ###
4
4
  ### Licensed under the Apache License, Version 2.0 (the "Apache License")