comet_backup_ruby_sdk 0.2.0

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 (130) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +25 -0
  3. data/Gemfile +15 -0
  4. data/LICENSE +7 -0
  5. data/README.md +81 -0
  6. data/Rakefile +22 -0
  7. data/comet_backup_ruby_sdk.gemspec +35 -0
  8. data/lib/comet/api_response_error.rb +27 -0
  9. data/lib/comet/comet_server.rb +2926 -0
  10. data/lib/comet/definitions.rb +550 -0
  11. data/lib/comet/models/add_bucket_response_message.rb +92 -0
  12. data/lib/comet/models/admin_account_properties_response.rb +76 -0
  13. data/lib/comet/models/admin_resource_response.rb +84 -0
  14. data/lib/comet/models/admin_security_options.rb +139 -0
  15. data/lib/comet/models/admin_u2fregistration.rb +84 -0
  16. data/lib/comet/models/admin_user_permissions.rb +102 -0
  17. data/lib/comet/models/available_download.rb +84 -0
  18. data/lib/comet/models/azure_destination_location.rb +102 -0
  19. data/lib/comet/models/b2destination_location.rb +110 -0
  20. data/lib/comet/models/b2storage_extra_info.rb +77 -0
  21. data/lib/comet/models/b2transaction_totals.rb +80 -0
  22. data/lib/comet/models/backup_job_advanced_options.rb +98 -0
  23. data/lib/comet/models/backup_job_detail.rb +199 -0
  24. data/lib/comet/models/backup_job_progress.rb +92 -0
  25. data/lib/comet/models/backup_rule_config.rb +188 -0
  26. data/lib/comet/models/backup_rule_event_triggers.rb +78 -0
  27. data/lib/comet/models/branding_options.rb +283 -0
  28. data/lib/comet/models/branding_properties.rb +245 -0
  29. data/lib/comet/models/browse_disk_drives_response.rb +91 -0
  30. data/lib/comet/models/browse_edbresponse.rb +91 -0
  31. data/lib/comet/models/browse_hvresponse.rb +91 -0
  32. data/lib/comet/models/browse_vssresponse.rb +91 -0
  33. data/lib/comet/models/bucket_properties.rb +89 -0
  34. data/lib/comet/models/bucket_usage_info.rb +91 -0
  35. data/lib/comet/models/comet_apiresponse_message.rb +76 -0
  36. data/lib/comet/models/comet_destination_location.rb +86 -0
  37. data/lib/comet/models/constellation_check_report.rb +89 -0
  38. data/lib/comet/models/constellation_stats.rb +86 -0
  39. data/lib/comet/models/constellation_status_apiresponse.rb +109 -0
  40. data/lib/comet/models/content_measurement.rb +89 -0
  41. data/lib/comet/models/content_measurement_component.rb +84 -0
  42. data/lib/comet/models/create_group_policy_response.rb +84 -0
  43. data/lib/comet/models/default_email_report_policy.rb +83 -0
  44. data/lib/comet/models/destination_config.rb +465 -0
  45. data/lib/comet/models/destination_location.rb +365 -0
  46. data/lib/comet/models/destination_statistics.rb +102 -0
  47. data/lib/comet/models/device_config.rb +96 -0
  48. data/lib/comet/models/disk_drive.rb +153 -0
  49. data/lib/comet/models/dispatcher_admin_sources_response.rb +92 -0
  50. data/lib/comet/models/dispatcher_stored_objects_response.rb +91 -0
  51. data/lib/comet/models/dispatcher_vault_snapshots_response.rb +91 -0
  52. data/lib/comet/models/edbfile_info.rb +92 -0
  53. data/lib/comet/models/email_options.rb +140 -0
  54. data/lib/comet/models/email_report_config.rb +90 -0
  55. data/lib/comet/models/email_report_generated_preview.rb +100 -0
  56. data/lib/comet/models/extra_file_exclusion.rb +82 -0
  57. data/lib/comet/models/ftpdestination_location.rb +124 -0
  58. data/lib/comet/models/get_group_policy_response.rb +91 -0
  59. data/lib/comet/models/get_profile_and_hash_response_message.rb +91 -0
  60. data/lib/comet/models/get_profile_hash_response_message.rb +84 -0
  61. data/lib/comet/models/group_policy.rb +83 -0
  62. data/lib/comet/models/hyper_vmachine_info.rb +78 -0
  63. data/lib/comet/models/live_user_connection.rb +125 -0
  64. data/lib/comet/models/local_destination_location.rb +92 -0
  65. data/lib/comet/models/mac_oscode_sign_properties.rb +113 -0
  66. data/lib/comet/models/mongo_dbconnection.rb +211 -0
  67. data/lib/comet/models/new_bucket_detail.rb +78 -0
  68. data/lib/comet/models/news_entry.rb +76 -0
  69. data/lib/comet/models/osinfo.rb +92 -0
  70. data/lib/comet/models/partition.rb +148 -0
  71. data/lib/comet/models/private_branding_properties.rb +185 -0
  72. data/lib/comet/models/protected_item_engine_type_policy.rb +84 -0
  73. data/lib/comet/models/public_branding_properties.rb +122 -0
  74. data/lib/comet/models/remote_server_address.rb +135 -0
  75. data/lib/comet/models/remote_storage_option.rb +147 -0
  76. data/lib/comet/models/replicator_state_apiresponse.rb +138 -0
  77. data/lib/comet/models/request_storage_vault_response_message.rb +84 -0
  78. data/lib/comet/models/restore_job_advanced_options.rb +104 -0
  79. data/lib/comet/models/retention_policy.rb +83 -0
  80. data/lib/comet/models/retention_range.rb +110 -0
  81. data/lib/comet/models/s3destination_location.rb +114 -0
  82. data/lib/comet/models/schedule_config.rb +82 -0
  83. data/lib/comet/models/search_clause.rb +111 -0
  84. data/lib/comet/models/server_config_options_branding_fragment.rb +69 -0
  85. data/lib/comet/models/server_config_options_software_build_role_fragment.rb +69 -0
  86. data/lib/comet/models/server_meta_version_info.rb +208 -0
  87. data/lib/comet/models/session_key_regenerated_response.rb +92 -0
  88. data/lib/comet/models/sftpdestination_location.rb +122 -0
  89. data/lib/comet/models/size_measurement.rb +80 -0
  90. data/lib/comet/models/software_build_role_options.rb +74 -0
  91. data/lib/comet/models/software_update_news_response.rb +102 -0
  92. data/lib/comet/models/source_basic_info.rb +93 -0
  93. data/lib/comet/models/source_config.rb +172 -0
  94. data/lib/comet/models/source_statistics.rb +69 -0
  95. data/lib/comet/models/spanned_destination_location.rb +77 -0
  96. data/lib/comet/models/spanned_storage_extra_info.rb +77 -0
  97. data/lib/comet/models/sshconnection.rb +114 -0
  98. data/lib/comet/models/stat_result.rb +86 -0
  99. data/lib/comet/models/storage_free_space_info.rb +98 -0
  100. data/lib/comet/models/storage_vault_provider_policy.rb +82 -0
  101. data/lib/comet/models/stored_object.rb +130 -0
  102. data/lib/comet/models/streamable_event.rb +74 -0
  103. data/lib/comet/models/swift_destination_location.rb +192 -0
  104. data/lib/comet/models/test_response.rb +82 -0
  105. data/lib/comet/models/totp_regenerated_response.rb +100 -0
  106. data/lib/comet/models/u2fregister_request.rb +78 -0
  107. data/lib/comet/models/u2fregistered_key.rb +86 -0
  108. data/lib/comet/models/u2fregistration_challenge_response.rb +122 -0
  109. data/lib/comet/models/u2fsign_request.rb +101 -0
  110. data/lib/comet/models/u2fsign_response.rb +94 -0
  111. data/lib/comet/models/uninstall_config.rb +74 -0
  112. data/lib/comet/models/update_campaign_device_status.rb +68 -0
  113. data/lib/comet/models/update_campaign_options.rb +86 -0
  114. data/lib/comet/models/update_campaign_properties.rb +100 -0
  115. data/lib/comet/models/update_campaign_status.rb +115 -0
  116. data/lib/comet/models/update_campaign_status_device_entry.rb +84 -0
  117. data/lib/comet/models/user_custom_email_settings.rb +77 -0
  118. data/lib/comet/models/user_on_server.rb +76 -0
  119. data/lib/comet/models/user_policy.rb +304 -0
  120. data/lib/comet/models/user_profile_config.rb +300 -0
  121. data/lib/comet/models/user_profile_fragment.rb +70 -0
  122. data/lib/comet/models/vault_snapshot.rb +84 -0
  123. data/lib/comet/models/vsscomponent.rb +92 -0
  124. data/lib/comet/models/vsswriter_info.rb +85 -0
  125. data/lib/comet/models/web_interface_branding_properties.rb +100 -0
  126. data/lib/comet/models/webhook_option.rb +84 -0
  127. data/lib/comet/models/win_smbauth.rb +92 -0
  128. data/lib/comet/models/windows_code_sign_properties.rb +130 -0
  129. data/lib/comet_backup_ruby_sdk.rb +130 -0
  130. metadata +227 -0
@@ -0,0 +1,245 @@
1
+ #!/usr/bin/env ruby --enable-frozen-string-literal
2
+ #
3
+ # Copyright (c) 2020-2020 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+ #
8
+ # frozen_string_literal: true
9
+
10
+ require 'json'
11
+
12
+ module Comet
13
+
14
+ # BrandingProperties is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class BrandingProperties
16
+
17
+ # @type [String] product_name
18
+ attr_accessor :product_name
19
+
20
+ # @type [String] company_name
21
+ attr_accessor :company_name
22
+
23
+ # @type [String] help_url
24
+ attr_accessor :help_url
25
+
26
+ # @type [Boolean] help_is_popup
27
+ attr_accessor :help_is_popup
28
+
29
+ # @type [String] default_login_server_url
30
+ attr_accessor :default_login_server_url
31
+
32
+ # @type [String] tile_background_color
33
+ attr_accessor :tile_background_color
34
+
35
+ # @type [String] account_register_url
36
+ attr_accessor :account_register_url
37
+
38
+ # @type [Boolean] hide_background_logo
39
+ attr_accessor :hide_background_logo
40
+
41
+ # @type [String] path_ico_file
42
+ attr_accessor :path_ico_file
43
+
44
+ # @type [String] path_icns_file
45
+ attr_accessor :path_icns_file
46
+
47
+ # @type [String] path_eula_rtf
48
+ attr_accessor :path_eula_rtf
49
+
50
+ # @type [String] path_tile_png
51
+ attr_accessor :path_tile_png
52
+
53
+ # @type [String] path_header_image
54
+ attr_accessor :path_header_image
55
+
56
+ # @type [String] package_identifier
57
+ attr_accessor :package_identifier
58
+
59
+ # @type [String] windows_code_sign_pkcs12file_path
60
+ attr_accessor :windows_code_sign_pkcs12file_path
61
+
62
+ # @type [Number] windows_code_sign_pkcs12password_format
63
+ attr_accessor :windows_code_sign_pkcs12password_format
64
+
65
+ # @type [String] windows_code_sign_pkcs12password
66
+ attr_accessor :windows_code_sign_pkcs12password
67
+
68
+ # @type [String] windows_code_sign_pkcs11engine
69
+ attr_accessor :windows_code_sign_pkcs11engine
70
+
71
+ # @type [String] windows_code_sign_pkcs11module
72
+ attr_accessor :windows_code_sign_pkcs11module
73
+
74
+ # @type [String] windows_code_sign_pkcs11certfile
75
+ attr_accessor :windows_code_sign_pkcs11certfile
76
+
77
+ # @type [String] windows_code_sign_pkcs11key_id
78
+ attr_accessor :windows_code_sign_pkcs11key_id
79
+
80
+ # @type [Number] windows_code_sign_pkcs11password_format
81
+ attr_accessor :windows_code_sign_pkcs11password_format
82
+
83
+ # @type [String] windows_code_sign_pkcs11password
84
+ attr_accessor :windows_code_sign_pkcs11password
85
+
86
+ # @type [Comet::MacOSCodeSignProperties] mac_oscode_sign
87
+ attr_accessor :mac_oscode_sign
88
+
89
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
90
+ attr_accessor :unknown_json_fields
91
+
92
+ def initialize
93
+ @unknown_json_fields = {}
94
+ end
95
+
96
+ # @param [String] json_string The complete object in JSON format
97
+ def from_json(json_string)
98
+ raise TypeError 'expected string' unless json_string.is_a? String
99
+
100
+ from_hash(JSON.parse(json_string))
101
+ end
102
+
103
+ # @param [Hash] obj The complete object as a Ruby hash
104
+ def from_hash(obj)
105
+ raise TypeError 'expected hash' unless obj.is_a? Hash
106
+
107
+ obj.each do |k, v|
108
+ case k
109
+ when 'ProductName'
110
+ raise TypeError 'expected string' unless v.is_a? String
111
+
112
+ @product_name = v
113
+ when 'CompanyName'
114
+ raise TypeError 'expected string' unless v.is_a? String
115
+
116
+ @company_name = v
117
+ when 'HelpURL'
118
+ raise TypeError 'expected string' unless v.is_a? String
119
+
120
+ @help_url = v
121
+ when 'HelpIsPopup'
122
+ @help_is_popup = v
123
+ when 'DefaultLoginServerURL'
124
+ raise TypeError 'expected string' unless v.is_a? String
125
+
126
+ @default_login_server_url = v
127
+ when 'TileBackgroundColor'
128
+ raise TypeError 'expected string' unless v.is_a? String
129
+
130
+ @tile_background_color = v
131
+ when 'AccountRegisterURL'
132
+ raise TypeError 'expected string' unless v.is_a? String
133
+
134
+ @account_register_url = v
135
+ when 'HideBackgroundLogo'
136
+ @hide_background_logo = v
137
+ when 'PathIcoFile'
138
+ raise TypeError 'expected string' unless v.is_a? String
139
+
140
+ @path_ico_file = v
141
+ when 'PathIcnsFile'
142
+ raise TypeError 'expected string' unless v.is_a? String
143
+
144
+ @path_icns_file = v
145
+ when 'PathEulaRtf'
146
+ raise TypeError 'expected string' unless v.is_a? String
147
+
148
+ @path_eula_rtf = v
149
+ when 'PathTilePng'
150
+ raise TypeError 'expected string' unless v.is_a? String
151
+
152
+ @path_tile_png = v
153
+ when 'PathHeaderImage'
154
+ raise TypeError 'expected string' unless v.is_a? String
155
+
156
+ @path_header_image = v
157
+ when 'PackageIdentifier'
158
+ raise TypeError 'expected string' unless v.is_a? String
159
+
160
+ @package_identifier = v
161
+ when 'WindowsCodeSignPKCS12FilePath'
162
+ raise TypeError 'expected string' unless v.is_a? String
163
+
164
+ @windows_code_sign_pkcs12file_path = v
165
+ when 'WindowsCodeSignPKCS12PasswordFormat'
166
+ @windows_code_sign_pkcs12password_format = v
167
+ when 'WindowsCodeSignPKCS12Password'
168
+ raise TypeError 'expected string' unless v.is_a? String
169
+
170
+ @windows_code_sign_pkcs12password = v
171
+ when 'WindowsCodeSignPKCS11Engine'
172
+ raise TypeError 'expected string' unless v.is_a? String
173
+
174
+ @windows_code_sign_pkcs11engine = v
175
+ when 'WindowsCodeSignPKCS11Module'
176
+ raise TypeError 'expected string' unless v.is_a? String
177
+
178
+ @windows_code_sign_pkcs11module = v
179
+ when 'WindowsCodeSignPKCS11Certfile'
180
+ raise TypeError 'expected string' unless v.is_a? String
181
+
182
+ @windows_code_sign_pkcs11certfile = v
183
+ when 'WindowsCodeSignPKCS11KeyID'
184
+ raise TypeError 'expected string' unless v.is_a? String
185
+
186
+ @windows_code_sign_pkcs11key_id = v
187
+ when 'WindowsCodeSignPKCS11PasswordFormat'
188
+ @windows_code_sign_pkcs11password_format = v
189
+ when 'WindowsCodeSignPKCS11Password'
190
+ raise TypeError 'expected string' unless v.is_a? String
191
+
192
+ @windows_code_sign_pkcs11password = v
193
+ when 'MacOSCodeSign'
194
+ @mac_oscode_sign = Comet::MacOSCodeSignProperties.new
195
+ @mac_oscode_sign.from_hash(v)
196
+ else
197
+ @unknown_json_fields[k] = v
198
+ end
199
+ end
200
+ end
201
+
202
+ # @return [Hash] The complete object as a Ruby hash
203
+ def to_hash
204
+ ret = {}
205
+ ret['ProductName'] = @product_name
206
+ ret['CompanyName'] = @company_name
207
+ ret['HelpURL'] = @help_url
208
+ ret['HelpIsPopup'] = @help_is_popup
209
+ ret['DefaultLoginServerURL'] = @default_login_server_url
210
+ ret['TileBackgroundColor'] = @tile_background_color
211
+ ret['AccountRegisterURL'] = @account_register_url
212
+ ret['HideBackgroundLogo'] = @hide_background_logo
213
+ ret['PathIcoFile'] = @path_ico_file
214
+ ret['PathIcnsFile'] = @path_icns_file
215
+ ret['PathEulaRtf'] = @path_eula_rtf
216
+ ret['PathTilePng'] = @path_tile_png
217
+ ret['PathHeaderImage'] = @path_header_image
218
+ ret['PackageIdentifier'] = @package_identifier
219
+ ret['WindowsCodeSignPKCS12FilePath'] = @windows_code_sign_pkcs12file_path
220
+ ret['WindowsCodeSignPKCS12PasswordFormat'] = @windows_code_sign_pkcs12password_format
221
+ ret['WindowsCodeSignPKCS12Password'] = @windows_code_sign_pkcs12password
222
+ ret['WindowsCodeSignPKCS11Engine'] = @windows_code_sign_pkcs11engine
223
+ ret['WindowsCodeSignPKCS11Module'] = @windows_code_sign_pkcs11module
224
+ ret['WindowsCodeSignPKCS11Certfile'] = @windows_code_sign_pkcs11certfile
225
+ ret['WindowsCodeSignPKCS11KeyID'] = @windows_code_sign_pkcs11key_id
226
+ ret['WindowsCodeSignPKCS11PasswordFormat'] = @windows_code_sign_pkcs11password_format
227
+ ret['WindowsCodeSignPKCS11Password'] = @windows_code_sign_pkcs11password
228
+ ret['MacOSCodeSign'] = @mac_oscode_sign
229
+ @unknown_json_fields.each do |k, v|
230
+ ret[k] = v
231
+ end
232
+ ret
233
+ end
234
+
235
+ # @return [Hash] The complete object as a Ruby hash
236
+ def to_h
237
+ to_hash
238
+ end
239
+
240
+ # @return [String] The complete object as a JSON string
241
+ def to_json(options = {})
242
+ to_hash.to_json(options)
243
+ end
244
+ end
245
+ end
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby --enable-frozen-string-literal
2
+ #
3
+ # Copyright (c) 2020-2020 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+ #
8
+ # frozen_string_literal: true
9
+
10
+ require 'json'
11
+
12
+ module Comet
13
+
14
+ # BrowseDiskDrivesResponse is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class BrowseDiskDrivesResponse
16
+
17
+ # @type [Number] status
18
+ attr_accessor :status
19
+
20
+ # @type [String] message
21
+ attr_accessor :message
22
+
23
+ # @type [Array<Comet::DiskDrive>] disks
24
+ attr_accessor :disks
25
+
26
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
27
+ attr_accessor :unknown_json_fields
28
+
29
+ def initialize
30
+ @disks = []
31
+ @unknown_json_fields = {}
32
+ end
33
+
34
+ # @param [String] json_string The complete object in JSON format
35
+ def from_json(json_string)
36
+ raise TypeError 'expected string' unless json_string.is_a? String
37
+
38
+ from_hash(JSON.parse(json_string))
39
+ end
40
+
41
+ # @param [Hash] obj The complete object as a Ruby hash
42
+ def from_hash(obj)
43
+ raise TypeError 'expected hash' unless obj.is_a? Hash
44
+
45
+ obj.each do |k, v|
46
+ case k
47
+ when 'Status'
48
+ @status = v
49
+ when 'Message'
50
+ raise TypeError 'expected string' unless v.is_a? String
51
+
52
+ @message = v
53
+ when 'Disks'
54
+ if v.nil?
55
+ @disks = []
56
+ else
57
+ @disks = Array.new(v.length)
58
+ v.each_with_index do |v1, i1|
59
+ @disks[i1] = Comet::DiskDrive.new
60
+ @disks[i1].from_hash(v1)
61
+ end
62
+ end
63
+ else
64
+ @unknown_json_fields[k] = v
65
+ end
66
+ end
67
+ end
68
+
69
+ # @return [Hash] The complete object as a Ruby hash
70
+ def to_hash
71
+ ret = {}
72
+ ret['Status'] = @status
73
+ ret['Message'] = @message
74
+ ret['Disks'] = @disks
75
+ @unknown_json_fields.each do |k, v|
76
+ ret[k] = v
77
+ end
78
+ ret
79
+ end
80
+
81
+ # @return [Hash] The complete object as a Ruby hash
82
+ def to_h
83
+ to_hash
84
+ end
85
+
86
+ # @return [String] The complete object as a JSON string
87
+ def to_json(options = {})
88
+ to_hash.to_json(options)
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby --enable-frozen-string-literal
2
+ #
3
+ # Copyright (c) 2020-2020 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+ #
8
+ # frozen_string_literal: true
9
+
10
+ require 'json'
11
+
12
+ module Comet
13
+
14
+ # BrowseEDBResponse is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class BrowseEDBResponse
16
+
17
+ # @type [Number] status
18
+ attr_accessor :status
19
+
20
+ # @type [String] message
21
+ attr_accessor :message
22
+
23
+ # @type [Array<Comet::EDBFileInfo>] databases
24
+ attr_accessor :databases
25
+
26
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
27
+ attr_accessor :unknown_json_fields
28
+
29
+ def initialize
30
+ @databases = []
31
+ @unknown_json_fields = {}
32
+ end
33
+
34
+ # @param [String] json_string The complete object in JSON format
35
+ def from_json(json_string)
36
+ raise TypeError 'expected string' unless json_string.is_a? String
37
+
38
+ from_hash(JSON.parse(json_string))
39
+ end
40
+
41
+ # @param [Hash] obj The complete object as a Ruby hash
42
+ def from_hash(obj)
43
+ raise TypeError 'expected hash' unless obj.is_a? Hash
44
+
45
+ obj.each do |k, v|
46
+ case k
47
+ when 'Status'
48
+ @status = v
49
+ when 'Message'
50
+ raise TypeError 'expected string' unless v.is_a? String
51
+
52
+ @message = v
53
+ when 'Databases'
54
+ if v.nil?
55
+ @databases = []
56
+ else
57
+ @databases = Array.new(v.length)
58
+ v.each_with_index do |v1, i1|
59
+ @databases[i1] = Comet::EDBFileInfo.new
60
+ @databases[i1].from_hash(v1)
61
+ end
62
+ end
63
+ else
64
+ @unknown_json_fields[k] = v
65
+ end
66
+ end
67
+ end
68
+
69
+ # @return [Hash] The complete object as a Ruby hash
70
+ def to_hash
71
+ ret = {}
72
+ ret['Status'] = @status
73
+ ret['Message'] = @message
74
+ ret['Databases'] = @databases
75
+ @unknown_json_fields.each do |k, v|
76
+ ret[k] = v
77
+ end
78
+ ret
79
+ end
80
+
81
+ # @return [Hash] The complete object as a Ruby hash
82
+ def to_h
83
+ to_hash
84
+ end
85
+
86
+ # @return [String] The complete object as a JSON string
87
+ def to_json(options = {})
88
+ to_hash.to_json(options)
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby --enable-frozen-string-literal
2
+ #
3
+ # Copyright (c) 2020-2020 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+ #
8
+ # frozen_string_literal: true
9
+
10
+ require 'json'
11
+
12
+ module Comet
13
+
14
+ # BrowseHVResponse is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class BrowseHVResponse
16
+
17
+ # @type [Number] status
18
+ attr_accessor :status
19
+
20
+ # @type [String] message
21
+ attr_accessor :message
22
+
23
+ # @type [Array<Comet::HyperVMachineInfo>] virtual_machines
24
+ attr_accessor :virtual_machines
25
+
26
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
27
+ attr_accessor :unknown_json_fields
28
+
29
+ def initialize
30
+ @virtual_machines = []
31
+ @unknown_json_fields = {}
32
+ end
33
+
34
+ # @param [String] json_string The complete object in JSON format
35
+ def from_json(json_string)
36
+ raise TypeError 'expected string' unless json_string.is_a? String
37
+
38
+ from_hash(JSON.parse(json_string))
39
+ end
40
+
41
+ # @param [Hash] obj The complete object as a Ruby hash
42
+ def from_hash(obj)
43
+ raise TypeError 'expected hash' unless obj.is_a? Hash
44
+
45
+ obj.each do |k, v|
46
+ case k
47
+ when 'Status'
48
+ @status = v
49
+ when 'Message'
50
+ raise TypeError 'expected string' unless v.is_a? String
51
+
52
+ @message = v
53
+ when 'VirtualMachines'
54
+ if v.nil?
55
+ @virtual_machines = []
56
+ else
57
+ @virtual_machines = Array.new(v.length)
58
+ v.each_with_index do |v1, i1|
59
+ @virtual_machines[i1] = Comet::HyperVMachineInfo.new
60
+ @virtual_machines[i1].from_hash(v1)
61
+ end
62
+ end
63
+ else
64
+ @unknown_json_fields[k] = v
65
+ end
66
+ end
67
+ end
68
+
69
+ # @return [Hash] The complete object as a Ruby hash
70
+ def to_hash
71
+ ret = {}
72
+ ret['Status'] = @status
73
+ ret['Message'] = @message
74
+ ret['VirtualMachines'] = @virtual_machines
75
+ @unknown_json_fields.each do |k, v|
76
+ ret[k] = v
77
+ end
78
+ ret
79
+ end
80
+
81
+ # @return [Hash] The complete object as a Ruby hash
82
+ def to_h
83
+ to_hash
84
+ end
85
+
86
+ # @return [String] The complete object as a JSON string
87
+ def to_json(options = {})
88
+ to_hash.to_json(options)
89
+ end
90
+ end
91
+ end