comet_backup_ruby_sdk 1.13.0 → 2.0.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 (195) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/Gemfile +2 -4
  4. data/Gemfile.lock +1 -1
  5. data/LICENSE +0 -0
  6. data/README.md +3 -2
  7. data/Rakefile +2 -4
  8. data/comet_backup_ruby_sdk.gemspec +1 -1
  9. data/lib/comet/api_response_error.rb +2 -4
  10. data/lib/comet/comet_server.rb +60 -17
  11. data/lib/comet/definitions.rb +50 -7
  12. data/lib/comet/models/add_bucket_response_message.rb +2 -4
  13. data/lib/comet/models/admin_account_properties_response.rb +2 -4
  14. data/lib/comet/models/admin_email_options.rb +2 -4
  15. data/lib/comet/models/admin_resource_response.rb +2 -4
  16. data/lib/comet/models/admin_security_options.rb +2 -4
  17. data/lib/comet/models/admin_u2fregistration.rb +2 -4
  18. data/lib/comet/models/admin_user_permissions.rb +2 -4
  19. data/lib/comet/models/admin_web_authn_registration.rb +2 -4
  20. data/lib/comet/models/allowed_admin_user.rb +2 -4
  21. data/lib/comet/models/amazon_awsvirtual_storage_role_settings.rb +91 -0
  22. data/lib/comet/models/authentication_role_options.rb +139 -0
  23. data/lib/comet/models/available_download.rb +2 -4
  24. data/lib/comet/models/azure_destination_location.rb +2 -4
  25. data/lib/comet/models/b2destination_location.rb +2 -4
  26. data/lib/comet/models/b2storage_extra_info.rb +2 -4
  27. data/lib/comet/models/b2transaction_totals.rb +2 -4
  28. data/lib/comet/models/b2virtual_storage_role_settings.rb +2 -4
  29. data/lib/comet/models/backup_job_advanced_options.rb +2 -4
  30. data/lib/comet/models/backup_job_detail.rb +2 -4
  31. data/lib/comet/models/backup_job_progress.rb +2 -4
  32. data/lib/comet/models/backup_rule_config.rb +2 -4
  33. data/lib/comet/models/backup_rule_event_triggers.rb +2 -4
  34. data/lib/comet/models/branding_options.rb +11 -4
  35. data/lib/comet/models/branding_properties.rb +11 -4
  36. data/lib/comet/models/browse_disk_drives_response.rb +2 -4
  37. data/lib/comet/models/browse_edbresponse.rb +2 -4
  38. data/lib/comet/models/browse_hvresponse.rb +2 -4
  39. data/lib/comet/models/browse_office_365list_virtual_accounts_response.rb +2 -4
  40. data/lib/comet/models/browse_office_365objects_response.rb +2 -4
  41. data/lib/comet/models/browse_sqlserver_response.rb +2 -4
  42. data/lib/comet/models/browse_vssresponse.rb +2 -4
  43. data/lib/comet/models/bucket_properties.rb +2 -4
  44. data/lib/comet/models/bucket_usage_info.rb +2 -4
  45. data/lib/comet/models/comet_apiresponse_message.rb +2 -4
  46. data/lib/comet/models/comet_destination_location.rb +2 -4
  47. data/lib/comet/models/constellation_check_report.rb +2 -4
  48. data/lib/comet/models/constellation_role_options.rb +91 -0
  49. data/lib/comet/models/constellation_stats.rb +2 -4
  50. data/lib/comet/models/constellation_status_apiresponse.rb +2 -4
  51. data/lib/comet/models/content_measurement.rb +2 -4
  52. data/lib/comet/models/content_measurement_component.rb +2 -4
  53. data/lib/comet/models/create_group_policy_response.rb +2 -4
  54. data/lib/comet/models/custom_remote_bucket_settings.rb +2 -4
  55. data/lib/comet/models/days_of_week_config.rb +2 -4
  56. data/lib/comet/models/default_email_report_policy.rb +2 -4
  57. data/lib/comet/models/default_source_with_osrestriction.rb +2 -4
  58. data/lib/comet/models/destination_config.rb +2 -4
  59. data/lib/comet/models/destination_location.rb +2 -4
  60. data/lib/comet/models/destination_statistics.rb +2 -4
  61. data/lib/comet/models/device_config.rb +2 -4
  62. data/lib/comet/models/disk_drive.rb +2 -4
  63. data/lib/comet/models/dispatcher_admin_sources_response.rb +2 -4
  64. data/lib/comet/models/dispatcher_stored_objects_response.rb +2 -4
  65. data/lib/comet/models/dispatcher_vault_snapshots_response.rb +2 -4
  66. data/lib/comet/models/dispatcher_windisk_snapshot_response.rb +2 -4
  67. data/lib/comet/models/edbfile_info.rb +2 -4
  68. data/lib/comet/models/email_options.rb +2 -4
  69. data/lib/comet/models/email_report_config.rb +2 -4
  70. data/lib/comet/models/email_report_generated_preview.rb +2 -4
  71. data/lib/comet/models/external_authentication_source.rb +184 -0
  72. data/lib/comet/models/external_ldapauthentication_source_server.rb +97 -0
  73. data/lib/comet/models/external_ldapauthentication_source_settings.rb +23 -10
  74. data/lib/comet/models/extra_file_exclusion.rb +2 -4
  75. data/lib/comet/models/ftpdestination_location.rb +2 -4
  76. data/lib/comet/models/get_group_policy_response.rb +2 -4
  77. data/lib/comet/models/get_profile_and_hash_response_message.rb +2 -4
  78. data/lib/comet/models/get_profile_hash_response_message.rb +2 -4
  79. data/lib/comet/models/group_policy.rb +2 -4
  80. data/lib/comet/models/hour_sched_config.rb +2 -4
  81. data/lib/comet/models/httpconnector_options.rb +139 -0
  82. data/lib/comet/models/hyper_vmachine_info.rb +2 -4
  83. data/lib/comet/models/install_creds.rb +2 -4
  84. data/lib/comet/models/install_token.rb +2 -4
  85. data/lib/comet/models/install_token_response.rb +2 -4
  86. data/lib/comet/models/job_entry.rb +2 -4
  87. data/lib/comet/models/license_options.rb +84 -0
  88. data/lib/comet/models/live_user_connection.rb +2 -4
  89. data/lib/comet/models/local_destination_location.rb +2 -4
  90. data/lib/comet/models/local_storage_directory.rb +73 -0
  91. data/lib/comet/models/mac_oscode_sign_properties.rb +2 -4
  92. data/lib/comet/models/mongo_dbconnection.rb +2 -4
  93. data/lib/comet/models/mssqlconnection.rb +2 -4
  94. data/lib/comet/models/my_sqlconnection.rb +2 -4
  95. data/lib/comet/models/new_bucket_detail.rb +2 -4
  96. data/lib/comet/models/news_entry.rb +2 -4
  97. data/lib/comet/models/office_365connection.rb +2 -4
  98. data/lib/comet/models/office_365credential.rb +2 -4
  99. data/lib/comet/models/office_365custom_setting.rb +2 -4
  100. data/lib/comet/models/office_365custom_setting_v2.rb +2 -4
  101. data/lib/comet/models/office_365mixed_virtual_account.rb +2 -4
  102. data/lib/comet/models/office_365object_info.rb +2 -4
  103. data/lib/comet/models/organization.rb +5 -7
  104. data/lib/comet/models/organization_response.rb +2 -4
  105. data/lib/comet/models/osinfo.rb +2 -4
  106. data/lib/comet/models/partition.rb +2 -4
  107. data/lib/comet/models/private_branding_properties.rb +11 -4
  108. data/lib/comet/models/protected_item_engine_type_policy.rb +2 -4
  109. data/lib/comet/models/public_branding_properties.rb +2 -4
  110. data/lib/comet/models/ratelimit_options.rb +81 -0
  111. data/lib/comet/models/ratelimit_rule.rb +82 -0
  112. data/lib/comet/models/register_office_application_begin_response.rb +2 -4
  113. data/lib/comet/models/register_office_application_check_response.rb +2 -4
  114. data/lib/comet/models/remote_server_address.rb +23 -4
  115. data/lib/comet/models/remote_storage_option.rb +23 -4
  116. data/lib/comet/models/replica_server.rb +187 -0
  117. data/lib/comet/models/replicator_state_apiresponse.rb +2 -4
  118. data/lib/comet/models/request_storage_vault_response_message.rb +2 -4
  119. data/lib/comet/models/restore_job_advanced_options.rb +2 -4
  120. data/lib/comet/models/retention_policy.rb +2 -4
  121. data/lib/comet/models/retention_range.rb +2 -4
  122. data/lib/comet/models/s3destination_location.rb +2 -4
  123. data/lib/comet/models/s3generic_virtual_storage_role.rb +109 -0
  124. data/lib/comet/models/schedule_config.rb +13 -4
  125. data/lib/comet/models/search_clause.rb +2 -4
  126. data/lib/comet/models/self_backup_options.rb +79 -0
  127. data/lib/comet/models/self_backup_statistics.rb +2 -4
  128. data/lib/comet/models/self_backup_target.rb +137 -0
  129. data/lib/comet/models/server_config_options.rb +253 -0
  130. data/lib/comet/models/server_config_options_branding_fragment.rb +2 -4
  131. data/lib/comet/models/server_config_options_software_build_role_fragment.rb +2 -4
  132. data/lib/comet/models/server_meta_branding_properties.rb +2 -4
  133. data/lib/comet/models/server_meta_version_info.rb +2 -4
  134. data/lib/comet/models/session_key_regenerated_response.rb +2 -4
  135. data/lib/comet/models/session_options.rb +73 -0
  136. data/lib/comet/models/sftpdestination_location.rb +2 -4
  137. data/lib/comet/models/size_measurement.rb +2 -4
  138. data/lib/comet/models/software_build_role_options.rb +2 -4
  139. data/lib/comet/models/software_update_news_response.rb +2 -4
  140. data/lib/comet/models/source_basic_info.rb +2 -4
  141. data/lib/comet/models/source_config.rb +2 -4
  142. data/lib/comet/models/source_include_pattern.rb +2 -4
  143. data/lib/comet/models/source_statistics.rb +2 -4
  144. data/lib/comet/models/spanned_destination_location.rb +2 -4
  145. data/lib/comet/models/spanned_storage_extra_info.rb +2 -4
  146. data/lib/comet/models/sshconnection.rb +2 -4
  147. data/lib/comet/models/stat_result.rb +2 -4
  148. data/lib/comet/models/storage_free_space_info.rb +2 -4
  149. data/lib/comet/models/storage_role_options.rb +110 -0
  150. data/lib/comet/models/storage_vault_provider_policy.rb +2 -4
  151. data/lib/comet/models/stored_object.rb +2 -4
  152. data/lib/comet/models/streamable_event.rb +2 -4
  153. data/lib/comet/models/swift_destination_location.rb +2 -4
  154. data/lib/comet/models/test_response.rb +2 -4
  155. data/lib/comet/models/totp_regenerated_response.rb +2 -4
  156. data/lib/comet/models/u2fregister_request.rb +2 -4
  157. data/lib/comet/models/u2fregistered_key.rb +2 -4
  158. data/lib/comet/models/u2fregistration_challenge_response.rb +2 -4
  159. data/lib/comet/models/u2fsign_request.rb +2 -4
  160. data/lib/comet/models/u2fsign_response.rb +2 -4
  161. data/lib/comet/models/uninstall_config.rb +2 -4
  162. data/lib/comet/models/update_campaign_device_status.rb +2 -4
  163. data/lib/comet/models/update_campaign_options.rb +2 -4
  164. data/lib/comet/models/update_campaign_properties.rb +2 -4
  165. data/lib/comet/models/update_campaign_status.rb +2 -4
  166. data/lib/comet/models/update_campaign_status_device_entry.rb +2 -4
  167. data/lib/comet/models/user_custom_email_settings.rb +2 -4
  168. data/lib/comet/models/user_on_server.rb +2 -4
  169. data/lib/comet/models/user_policy.rb +2 -4
  170. data/lib/comet/models/user_profile_config.rb +2 -4
  171. data/lib/comet/models/user_profile_fragment.rb +2 -4
  172. data/lib/comet/models/vault_snapshot.rb +2 -4
  173. data/lib/comet/models/vmdksnapshot_view_options.rb +2 -4
  174. data/lib/comet/models/vsscomponent.rb +2 -4
  175. data/lib/comet/models/vsswriter_info.rb +2 -4
  176. data/lib/comet/models/wasabi_virtual_storage_role_settings.rb +2 -4
  177. data/lib/comet/models/web_authn_authenticator_selection.rb +2 -4
  178. data/lib/comet/models/web_authn_credential.rb +2 -4
  179. data/lib/comet/models/web_authn_credential_assertion.rb +2 -4
  180. data/lib/comet/models/web_authn_credential_descriptor.rb +2 -4
  181. data/lib/comet/models/web_authn_credential_entity.rb +2 -4
  182. data/lib/comet/models/web_authn_credential_parameter.rb +2 -4
  183. data/lib/comet/models/web_authn_public_key_credential_creation_options.rb +2 -4
  184. data/lib/comet/models/web_authn_public_key_credential_request_options.rb +2 -4
  185. data/lib/comet/models/web_authn_registration_challenge_response.rb +2 -4
  186. data/lib/comet/models/web_authn_relying_party_entity.rb +2 -4
  187. data/lib/comet/models/web_authn_sign_request.rb +2 -4
  188. data/lib/comet/models/web_authn_sign_response.rb +2 -4
  189. data/lib/comet/models/web_authn_user_entity.rb +2 -4
  190. data/lib/comet/models/web_interface_branding_properties.rb +2 -4
  191. data/lib/comet/models/webhook_option.rb +2 -4
  192. data/lib/comet/models/win_smbauth.rb +2 -4
  193. data/lib/comet/models/windows_code_sign_properties.rb +2 -4
  194. data/lib/comet_backup_ruby_sdk.rb +19 -4
  195. metadata +19 -2
@@ -0,0 +1,253 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+
8
+ require 'json'
9
+
10
+ module Comet
11
+
12
+ # ServerConfigOptions is a typed class wrapper around the underlying Comet Server API data structure.
13
+ class ServerConfigOptions
14
+
15
+ # @type [Array<String>] experimental_options
16
+ attr_accessor :experimental_options
17
+
18
+ # @type [Hash{String => Comet::WebhookOption}] webhook_options
19
+ attr_accessor :webhook_options
20
+
21
+ # @type [Comet::LicenseOptions] license
22
+ attr_accessor :license
23
+
24
+ # @type [Comet::BrandingOptions] branding
25
+ attr_accessor :branding
26
+
27
+ # @type [Array<Comet::AllowedAdminUser>] admin_users
28
+ attr_accessor :admin_users
29
+
30
+ # @type [Hash{String => Comet::Organization}] organizations
31
+ attr_accessor :organizations
32
+
33
+ # @type [Hash{String => Comet::ExternalAuthenticationSource}] external_admin_user_sources
34
+ attr_accessor :external_admin_user_sources
35
+
36
+ # @type [Array<Comet::HTTPConnectorOptions>] listen_addresses
37
+ attr_accessor :listen_addresses
38
+
39
+ # @type [Boolean] trust_xforwarded_for
40
+ attr_accessor :trust_xforwarded_for
41
+
42
+ # @type [Comet::RatelimitOptions] iprate_limit
43
+ attr_accessor :iprate_limit
44
+
45
+ # @type [Comet::EmailOptions] email
46
+ attr_accessor :email
47
+
48
+ # @type [Comet::AuthenticationRoleOptions] authentication_role
49
+ attr_accessor :authentication_role
50
+
51
+ # @type [Comet::StorageRoleOptions] storage_role
52
+ attr_accessor :storage_role
53
+
54
+ # @type [Comet::SoftwareBuildRoleOptions] software_build_role
55
+ attr_accessor :software_build_role
56
+
57
+ # @type [Comet::ConstellationRoleOptions] constellation_role
58
+ attr_accessor :constellation_role
59
+
60
+ # @type [Comet::ConstellationRoleOptions] constellation_role__legacy
61
+ attr_accessor :constellation_role__legacy
62
+
63
+ # @type [Comet::SelfBackupOptions] self_backup
64
+ attr_accessor :self_backup
65
+
66
+ # @type [Comet::SessionOptions] session_settings
67
+ attr_accessor :session_settings
68
+
69
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
70
+ attr_accessor :unknown_json_fields
71
+
72
+ def initialize
73
+ clear
74
+ end
75
+
76
+ def clear
77
+ @experimental_options = []
78
+ @webhook_options = {}
79
+ @license = Comet::LicenseOptions.new
80
+ @branding = Comet::BrandingOptions.new
81
+ @admin_users = []
82
+ @organizations = {}
83
+ @external_admin_user_sources = {}
84
+ @listen_addresses = []
85
+ @iprate_limit = Comet::RatelimitOptions.new
86
+ @email = Comet::EmailOptions.new
87
+ @authentication_role = Comet::AuthenticationRoleOptions.new
88
+ @storage_role = Comet::StorageRoleOptions.new
89
+ @software_build_role = Comet::SoftwareBuildRoleOptions.new
90
+ @constellation_role = Comet::ConstellationRoleOptions.new
91
+ @constellation_role__legacy = Comet::ConstellationRoleOptions.new
92
+ @self_backup = Comet::SelfBackupOptions.new
93
+ @session_settings = Comet::SessionOptions.new
94
+ @unknown_json_fields = {}
95
+ end
96
+
97
+ # @param [String] json_string The complete object in JSON format
98
+ def from_json(json_string)
99
+ raise TypeError, "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
100
+
101
+ from_hash(JSON.parse(json_string))
102
+ end
103
+
104
+ # @param [Hash] obj The complete object as a Ruby hash
105
+ def from_hash(obj)
106
+ raise TypeError, "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
107
+
108
+ obj.each do |k, v|
109
+ case k
110
+ when 'ExperimentalOptions'
111
+ if v.nil?
112
+ @experimental_options = []
113
+ else
114
+ @experimental_options = Array.new(v.length)
115
+ v.each_with_index do |v1, i1|
116
+ raise TypeError, "'v1' expected String, got #{v1.class}" unless v1.is_a? String
117
+
118
+ @experimental_options[i1] = v1
119
+ end
120
+ end
121
+ when 'WebhookOptions'
122
+ @webhook_options = {}
123
+ if v.nil?
124
+ @webhook_options = {}
125
+ else
126
+ v.each do |k1, v1|
127
+ @webhook_options[k1] = Comet::WebhookOption.new
128
+ @webhook_options[k1].from_hash(v1)
129
+ end
130
+ end
131
+ when 'License'
132
+ @license = Comet::LicenseOptions.new
133
+ @license.from_hash(v)
134
+ when 'Branding'
135
+ @branding = Comet::BrandingOptions.new
136
+ @branding.from_hash(v)
137
+ when 'AdminUsers'
138
+ if v.nil?
139
+ @admin_users = []
140
+ else
141
+ @admin_users = Array.new(v.length)
142
+ v.each_with_index do |v1, i1|
143
+ @admin_users[i1] = Comet::AllowedAdminUser.new
144
+ @admin_users[i1].from_hash(v1)
145
+ end
146
+ end
147
+ when 'Organizations'
148
+ @organizations = {}
149
+ if v.nil?
150
+ @organizations = {}
151
+ else
152
+ v.each do |k1, v1|
153
+ @organizations[k1] = Comet::Organization.new
154
+ @organizations[k1].from_hash(v1)
155
+ end
156
+ end
157
+ when 'ExternalAdminUserSources'
158
+ @external_admin_user_sources = {}
159
+ if v.nil?
160
+ @external_admin_user_sources = {}
161
+ else
162
+ v.each do |k1, v1|
163
+ @external_admin_user_sources[k1] = Comet::ExternalAuthenticationSource.new
164
+ @external_admin_user_sources[k1].from_hash(v1)
165
+ end
166
+ end
167
+ when 'ListenAddresses'
168
+ if v.nil?
169
+ @listen_addresses = []
170
+ else
171
+ @listen_addresses = Array.new(v.length)
172
+ v.each_with_index do |v1, i1|
173
+ @listen_addresses[i1] = Comet::HTTPConnectorOptions.new
174
+ @listen_addresses[i1].from_hash(v1)
175
+ end
176
+ end
177
+ when 'TrustXForwardedFor'
178
+ @trust_xforwarded_for = v
179
+ when 'IPRateLimit'
180
+ @iprate_limit = Comet::RatelimitOptions.new
181
+ @iprate_limit.from_hash(v)
182
+ when 'Email'
183
+ @email = Comet::EmailOptions.new
184
+ @email.from_hash(v)
185
+ when 'AuthenticationRole'
186
+ @authentication_role = Comet::AuthenticationRoleOptions.new
187
+ @authentication_role.from_hash(v)
188
+ when 'StorageRole'
189
+ @storage_role = Comet::StorageRoleOptions.new
190
+ @storage_role.from_hash(v)
191
+ when 'SoftwareBuildRole'
192
+ @software_build_role = Comet::SoftwareBuildRoleOptions.new
193
+ @software_build_role.from_hash(v)
194
+ when 'ConstellationRole'
195
+ @constellation_role = Comet::ConstellationRoleOptions.new
196
+ @constellation_role.from_hash(v)
197
+ when 'OverseerRole'
198
+ @constellation_role__legacy = Comet::ConstellationRoleOptions.new
199
+ @constellation_role__legacy.from_hash(v)
200
+ when 'SelfBackup'
201
+ @self_backup = Comet::SelfBackupOptions.new
202
+ @self_backup.from_hash(v)
203
+ when 'SessionSettings'
204
+ @session_settings = Comet::SessionOptions.new
205
+ @session_settings.from_hash(v)
206
+ else
207
+ @unknown_json_fields[k] = v
208
+ end
209
+ end
210
+ end
211
+
212
+ # @return [Hash] The complete object as a Ruby hash
213
+ def to_hash
214
+ ret = {}
215
+ unless @experimental_options.nil?
216
+ ret['ExperimentalOptions'] = @experimental_options
217
+ end
218
+ ret['WebhookOptions'] = @webhook_options
219
+ ret['License'] = @license
220
+ ret['Branding'] = @branding
221
+ ret['AdminUsers'] = @admin_users
222
+ ret['Organizations'] = @organizations
223
+ ret['ExternalAdminUserSources'] = @external_admin_user_sources
224
+ ret['ListenAddresses'] = @listen_addresses
225
+ ret['TrustXForwardedFor'] = @trust_xforwarded_for
226
+ ret['IPRateLimit'] = @iprate_limit
227
+ ret['Email'] = @email
228
+ ret['AuthenticationRole'] = @authentication_role
229
+ ret['StorageRole'] = @storage_role
230
+ ret['SoftwareBuildRole'] = @software_build_role
231
+ ret['ConstellationRole'] = @constellation_role
232
+ unless @constellation_role__legacy.nil?
233
+ ret['OverseerRole'] = @constellation_role__legacy
234
+ end
235
+ ret['SelfBackup'] = @self_backup
236
+ ret['SessionSettings'] = @session_settings
237
+ @unknown_json_fields.each do |k, v|
238
+ ret[k] = v
239
+ end
240
+ ret
241
+ end
242
+
243
+ # @return [Hash] The complete object as a Ruby hash
244
+ def to_h
245
+ to_hash
246
+ end
247
+
248
+ # @return [String] The complete object as a JSON string
249
+ def to_json(options = {})
250
+ to_hash.to_json(options)
251
+ end
252
+ end
253
+ end
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
+ # Please see the LICENSE file for usage information.
5
+ #
6
+ # SPDX-License-Identifier: MIT
7
+
8
+ require 'json'
9
+
10
+ module Comet
11
+
12
+ # SessionOptions is a typed class wrapper around the underlying Comet Server API data structure.
13
+ class SessionOptions
14
+
15
+ # @type [Number] expired_in_seconds
16
+ attr_accessor :expired_in_seconds
17
+
18
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
19
+ attr_accessor :unknown_json_fields
20
+
21
+ def initialize
22
+ clear
23
+ end
24
+
25
+ def clear
26
+ @expired_in_seconds = 0
27
+ @unknown_json_fields = {}
28
+ end
29
+
30
+ # @param [String] json_string The complete object in JSON format
31
+ def from_json(json_string)
32
+ raise TypeError, "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
33
+
34
+ from_hash(JSON.parse(json_string))
35
+ end
36
+
37
+ # @param [Hash] obj The complete object as a Ruby hash
38
+ def from_hash(obj)
39
+ raise TypeError, "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
40
+
41
+ obj.each do |k, v|
42
+ case k
43
+ when 'ExpiredInSeconds'
44
+ raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
45
+
46
+ @expired_in_seconds = v
47
+ else
48
+ @unknown_json_fields[k] = v
49
+ end
50
+ end
51
+ end
52
+
53
+ # @return [Hash] The complete object as a Ruby hash
54
+ def to_hash
55
+ ret = {}
56
+ ret['ExpiredInSeconds'] = @expired_in_seconds
57
+ @unknown_json_fields.each do |k, v|
58
+ ret[k] = v
59
+ end
60
+ ret
61
+ end
62
+
63
+ # @return [Hash] The complete object as a Ruby hash
64
+ def to_h
65
+ to_hash
66
+ end
67
+
68
+ # @return [String] The complete object as a JSON string
69
+ def to_json(options = {})
70
+ to_hash.to_json(options)
71
+ end
72
+ end
73
+ end
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby --enable-frozen-string-literal
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  # Copyright (c) 2020-2022 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
7
- #
8
- # frozen_string_literal: true
9
7
 
10
8
  require 'json'
11
9