comet_backup_ruby_sdk 2.37.0 → 2.38.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 (227) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/Gemfile.lock +1 -1
  4. data/comet_backup_ruby_sdk.gemspec +1 -1
  5. data/lib/comet/api_response_error.rb +1 -1
  6. data/lib/comet/comet_server.rb +242 -3
  7. data/lib/comet/definitions.rb +23 -5
  8. data/lib/comet/models/add_bucket_response_message.rb +1 -1
  9. data/lib/comet/models/admin_account_properties_response.rb +1 -1
  10. data/lib/comet/models/admin_email_options.rb +1 -1
  11. data/lib/comet/models/admin_resource_response.rb +1 -1
  12. data/lib/comet/models/admin_security_options.rb +8 -1
  13. data/lib/comet/models/admin_u2fregistration.rb +1 -1
  14. data/lib/comet/models/admin_user_permissions.rb +1 -1
  15. data/lib/comet/models/admin_web_authn_registration.rb +1 -1
  16. data/lib/comet/models/allowed_admin_user.rb +8 -1
  17. data/lib/comet/models/amazon_awsvirtual_storage_role_settings.rb +1 -1
  18. data/lib/comet/models/authentication_role_options.rb +1 -1
  19. data/lib/comet/models/available_download.rb +1 -1
  20. data/lib/comet/models/azure_destination_location.rb +1 -1
  21. data/lib/comet/models/b2destination_location.rb +1 -1
  22. data/lib/comet/models/b2storage_extra_info.rb +1 -1
  23. data/lib/comet/models/b2transaction_totals.rb +1 -1
  24. data/lib/comet/models/b2virtual_storage_role_settings.rb +1 -1
  25. data/lib/comet/models/backup_job_advanced_options.rb +1 -1
  26. data/lib/comet/models/backup_job_detail.rb +1 -1
  27. data/lib/comet/models/backup_job_progress.rb +1 -1
  28. data/lib/comet/models/backup_rule_config.rb +1 -1
  29. data/lib/comet/models/backup_rule_event_triggers.rb +1 -1
  30. data/lib/comet/models/branding_options.rb +1 -1
  31. data/lib/comet/models/branding_properties.rb +1 -1
  32. data/lib/comet/models/browse_disk_drives_response.rb +1 -1
  33. data/lib/comet/models/browse_edbresponse.rb +1 -1
  34. data/lib/comet/models/browse_hvresponse.rb +1 -1
  35. data/lib/comet/models/browse_office_365list_virtual_accounts_response.rb +1 -1
  36. data/lib/comet/models/browse_office_365objects_response.rb +1 -1
  37. data/lib/comet/models/browse_sqlserver_response.rb +1 -1
  38. data/lib/comet/models/browse_vmware_response.rb +1 -1
  39. data/lib/comet/models/browse_vssresponse.rb +1 -1
  40. data/lib/comet/models/bucket_properties.rb +1 -1
  41. data/lib/comet/models/bucket_usage_info.rb +1 -1
  42. data/lib/comet/models/comet_apiresponse_message.rb +1 -1
  43. data/lib/comet/models/comet_destination_location.rb +1 -1
  44. data/lib/comet/models/constellation_check_report.rb +1 -1
  45. data/lib/comet/models/constellation_role_options.rb +1 -1
  46. data/lib/comet/models/constellation_stats.rb +1 -1
  47. data/lib/comet/models/constellation_status_apiresponse.rb +1 -1
  48. data/lib/comet/models/content_measurement.rb +1 -1
  49. data/lib/comet/models/content_measurement_component.rb +1 -1
  50. data/lib/comet/models/count_jobs_response.rb +1 -1
  51. data/lib/comet/models/create_group_policy_response.rb +1 -1
  52. data/lib/comet/models/create_user_group_response.rb +92 -0
  53. data/lib/comet/models/custom_remote_bucket_settings.rb +1 -1
  54. data/lib/comet/models/days_of_week_config.rb +1 -1
  55. data/lib/comet/models/default_email_report_policy.rb +1 -1
  56. data/lib/comet/models/default_source_with_osrestriction.rb +1 -1
  57. data/lib/comet/models/destination_config.rb +17 -1
  58. data/lib/comet/models/destination_location.rb +1 -1
  59. data/lib/comet/models/destination_statistics.rb +1 -1
  60. data/lib/comet/models/device_config.rb +1 -1
  61. data/lib/comet/models/disk_drive.rb +1 -1
  62. data/lib/comet/models/dispatcher_admin_sources_response.rb +1 -1
  63. data/lib/comet/models/dispatcher_stored_objects_response.rb +1 -1
  64. data/lib/comet/models/dispatcher_vault_snapshots_response.rb +1 -1
  65. data/lib/comet/models/dispatcher_windisk_snapshot_response.rb +1 -1
  66. data/lib/comet/models/edbfile_info.rb +1 -1
  67. data/lib/comet/models/email_options.rb +1 -1
  68. data/lib/comet/models/email_report_config.rb +1 -1
  69. data/lib/comet/models/email_report_generated_preview.rb +1 -1
  70. data/lib/comet/models/email_reporting_option.rb +1 -1
  71. data/lib/comet/models/external_authentication_source.rb +1 -1
  72. data/lib/comet/models/external_authentication_source_display.rb +1 -1
  73. data/lib/comet/models/external_authentication_source_response.rb +1 -1
  74. data/lib/comet/models/external_ldapauthentication_source_server.rb +1 -1
  75. data/lib/comet/models/external_ldapauthentication_source_settings.rb +1 -1
  76. data/lib/comet/models/extra_file_exclusion.rb +1 -1
  77. data/lib/comet/models/file_option.rb +1 -1
  78. data/lib/comet/models/ftpdestination_location.rb +1 -1
  79. data/lib/comet/models/get_group_policy_response.rb +1 -1
  80. data/lib/comet/models/get_profile_and_hash_response_message.rb +1 -1
  81. data/lib/comet/models/get_profile_hash_response_message.rb +1 -1
  82. data/lib/comet/models/get_user_group_response.rb +81 -0
  83. data/lib/comet/models/get_user_group_with_users_response.rb +87 -0
  84. data/lib/comet/models/global_override_options.rb +1 -1
  85. data/lib/comet/models/group_policy.rb +1 -1
  86. data/lib/comet/models/hour_sched_config.rb +1 -1
  87. data/lib/comet/models/httpconnector_options.rb +1 -1
  88. data/lib/comet/models/hyper_vmachine_info.rb +1 -1
  89. data/lib/comet/models/impossible_cloud_iamtemplate_settings.rb +1 -1
  90. data/lib/comet/models/impossible_cloud_partner_template_settings.rb +1 -1
  91. data/lib/comet/models/install_creds.rb +1 -1
  92. data/lib/comet/models/install_token.rb +1 -1
  93. data/lib/comet/models/install_token_response.rb +1 -1
  94. data/lib/comet/models/job_entry.rb +1 -1
  95. data/lib/comet/models/license_limits.rb +1 -1
  96. data/lib/comet/models/license_options.rb +1 -1
  97. data/lib/comet/models/live_user_connection.rb +1 -1
  98. data/lib/comet/models/local_destination_location.rb +1 -1
  99. data/lib/comet/models/local_storage_directory.rb +1 -1
  100. data/lib/comet/models/login_protection_options.rb +93 -0
  101. data/lib/comet/models/mac_oscode_sign_properties.rb +1 -1
  102. data/lib/comet/models/mongo_dbconnection.rb +1 -1
  103. data/lib/comet/models/mssqlconnection.rb +1 -1
  104. data/lib/comet/models/mssqllogin_args.rb +1 -1
  105. data/lib/comet/models/my_sqlconnection.rb +1 -1
  106. data/lib/comet/models/new_bucket_detail.rb +1 -1
  107. data/lib/comet/models/news_entry.rb +1 -1
  108. data/lib/comet/models/object_lock_storage_template_settings.rb +1 -1
  109. data/lib/comet/models/office_365connection.rb +1 -1
  110. data/lib/comet/models/office_365credential.rb +1 -1
  111. data/lib/comet/models/office_365custom_setting.rb +1 -1
  112. data/lib/comet/models/office_365custom_setting_v2.rb +1 -1
  113. data/lib/comet/models/office_365mixed_virtual_account.rb +1 -1
  114. data/lib/comet/models/office_365object_info.rb +1 -1
  115. data/lib/comet/models/oidc_claim.rb +1 -1
  116. data/lib/comet/models/oidc_config.rb +1 -1
  117. data/lib/comet/models/organization.rb +1 -1
  118. data/lib/comet/models/organization_login_urlresponse.rb +1 -1
  119. data/lib/comet/models/organization_response.rb +1 -1
  120. data/lib/comet/models/osinfo.rb +1 -1
  121. data/lib/comet/models/partition.rb +1 -1
  122. data/lib/comet/models/private_branding_properties.rb +1 -1
  123. data/lib/comet/models/protected_item_engine_type_policy.rb +1 -1
  124. data/lib/comet/models/psaconfig.rb +1 -1
  125. data/lib/comet/models/psagrouped_by.rb +1 -1
  126. data/lib/comet/models/public_branding_properties.rb +1 -1
  127. data/lib/comet/models/ratelimit_options.rb +1 -1
  128. data/lib/comet/models/ratelimit_rule.rb +1 -1
  129. data/lib/comet/models/register_office_application_begin_response.rb +1 -1
  130. data/lib/comet/models/register_office_application_check_response.rb +1 -1
  131. data/lib/comet/models/registration_lobby_connection.rb +1 -1
  132. data/lib/comet/models/remote_server_address.rb +1 -1
  133. data/lib/comet/models/remote_storage_option.rb +16 -1
  134. data/lib/comet/models/replica_server.rb +1 -1
  135. data/lib/comet/models/replicator_state_apiresponse.rb +1 -1
  136. data/lib/comet/models/request_storage_vault_response_message.rb +1 -1
  137. data/lib/comet/models/restore_job_advanced_options.rb +1 -1
  138. data/lib/comet/models/retention_policy.rb +1 -1
  139. data/lib/comet/models/retention_range.rb +1 -1
  140. data/lib/comet/models/s3destination_location.rb +1 -1
  141. data/lib/comet/models/s3generic_virtual_storage_role.rb +1 -1
  142. data/lib/comet/models/schedule_config.rb +1 -1
  143. data/lib/comet/models/search_clause.rb +1 -1
  144. data/lib/comet/models/search_result_file_info.rb +1 -1
  145. data/lib/comet/models/search_snapshots_response.rb +1 -1
  146. data/lib/comet/models/self_backup_export_options.rb +1 -1
  147. data/lib/comet/models/self_backup_options.rb +1 -1
  148. data/lib/comet/models/self_backup_statistics.rb +1 -1
  149. data/lib/comet/models/self_backup_target.rb +1 -1
  150. data/lib/comet/models/server_config_options.rb +10 -1
  151. data/lib/comet/models/server_config_options_branding_fragment.rb +1 -1
  152. data/lib/comet/models/server_config_options_software_build_role_fragment.rb +1 -1
  153. data/lib/comet/models/server_meta_branding_properties.rb +8 -1
  154. data/lib/comet/models/server_meta_version_info.rb +3 -1
  155. data/lib/comet/models/session_key_regenerated_response.rb +1 -1
  156. data/lib/comet/models/session_options.rb +1 -1
  157. data/lib/comet/models/sftpdestination_location.rb +1 -1
  158. data/lib/comet/models/single_field_source.rb +1 -1
  159. data/lib/comet/models/size_measurement.rb +1 -1
  160. data/lib/comet/models/smbdestination_location.rb +1 -1
  161. data/lib/comet/models/software_build_role_options.rb +1 -1
  162. data/lib/comet/models/software_update_news_response.rb +1 -1
  163. data/lib/comet/models/source_basic_info.rb +1 -1
  164. data/lib/comet/models/source_config.rb +1 -1
  165. data/lib/comet/models/source_include_pattern.rb +1 -1
  166. data/lib/comet/models/source_statistics.rb +1 -1
  167. data/lib/comet/models/spanned_destination_location.rb +1 -1
  168. data/lib/comet/models/spanned_storage_extra_info.rb +1 -1
  169. data/lib/comet/models/sshconnection.rb +1 -1
  170. data/lib/comet/models/stat_result.rb +1 -1
  171. data/lib/comet/models/storage_free_space_info.rb +1 -1
  172. data/lib/comet/models/storage_role_options.rb +1 -1
  173. data/lib/comet/models/storage_vault_provider_policy.rb +1 -1
  174. data/lib/comet/models/stored_object.rb +1 -1
  175. data/lib/comet/models/storj_destination_location.rb +1 -1
  176. data/lib/comet/models/storj_virtual_storage_role_setting.rb +1 -1
  177. data/lib/comet/models/streamable_event.rb +1 -1
  178. data/lib/comet/models/swift_destination_location.rb +1 -1
  179. data/lib/comet/models/test_response.rb +1 -1
  180. data/lib/comet/models/time_span.rb +1 -1
  181. data/lib/comet/models/totp_regenerated_response.rb +1 -1
  182. data/lib/comet/models/u2fregister_request.rb +1 -1
  183. data/lib/comet/models/u2fregistered_key.rb +1 -1
  184. data/lib/comet/models/u2fregistration_challenge_response.rb +1 -1
  185. data/lib/comet/models/u2fsign_request.rb +1 -1
  186. data/lib/comet/models/u2fsign_response.rb +1 -1
  187. data/lib/comet/models/uninstall_config.rb +1 -1
  188. data/lib/comet/models/update_campaign_device_status.rb +1 -1
  189. data/lib/comet/models/update_campaign_options.rb +1 -1
  190. data/lib/comet/models/update_campaign_properties.rb +1 -1
  191. data/lib/comet/models/update_campaign_status.rb +1 -1
  192. data/lib/comet/models/update_campaign_status_device_entry.rb +1 -1
  193. data/lib/comet/models/user_custom_email_settings.rb +1 -1
  194. data/lib/comet/models/user_group.rb +92 -0
  195. data/lib/comet/models/user_on_server.rb +1 -1
  196. data/lib/comet/models/user_policy.rb +10 -1
  197. data/lib/comet/models/user_profile_config.rb +29 -2
  198. data/lib/comet/models/user_profile_fragment.rb +1 -1
  199. data/lib/comet/models/user_server_config.rb +1 -1
  200. data/lib/comet/models/vault_snapshot.rb +1 -1
  201. data/lib/comet/models/vmdksnapshot_view_options.rb +1 -1
  202. data/lib/comet/models/vmware_connection.rb +1 -1
  203. data/lib/comet/models/vmware_machine_info.rb +1 -1
  204. data/lib/comet/models/vsphere_connection.rb +1 -1
  205. data/lib/comet/models/vsscomponent.rb +1 -1
  206. data/lib/comet/models/vsswriter_info.rb +1 -1
  207. data/lib/comet/models/wasabi_virtual_storage_role_settings.rb +1 -1
  208. data/lib/comet/models/web_authn_authenticator_selection.rb +1 -1
  209. data/lib/comet/models/web_authn_credential.rb +1 -1
  210. data/lib/comet/models/web_authn_credential_assertion.rb +1 -1
  211. data/lib/comet/models/web_authn_credential_descriptor.rb +1 -1
  212. data/lib/comet/models/web_authn_credential_entity.rb +1 -1
  213. data/lib/comet/models/web_authn_credential_parameter.rb +1 -1
  214. data/lib/comet/models/web_authn_public_key_credential_creation_options.rb +1 -1
  215. data/lib/comet/models/web_authn_public_key_credential_request_options.rb +1 -1
  216. data/lib/comet/models/web_authn_registration_challenge_response.rb +1 -1
  217. data/lib/comet/models/web_authn_relying_party_entity.rb +1 -1
  218. data/lib/comet/models/web_authn_sign_request.rb +1 -1
  219. data/lib/comet/models/web_authn_sign_response.rb +1 -1
  220. data/lib/comet/models/web_authn_user_entity.rb +1 -1
  221. data/lib/comet/models/web_dav_destination_location.rb +1 -1
  222. data/lib/comet/models/web_interface_branding_properties.rb +1 -1
  223. data/lib/comet/models/webhook_option.rb +1 -1
  224. data/lib/comet/models/win_smbauth.rb +1 -1
  225. data/lib/comet/models/windows_code_sign_properties.rb +1 -1
  226. data/lib/comet_backup_ruby_sdk.rb +6 -1
  227. metadata +7 -2
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2020-2025 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
+ # GetUserGroupResponse is a typed class wrapper around the underlying Comet Server API data structure.
13
+ class GetUserGroupResponse
14
+
15
+ # @type [Comet::UserGroup] user_group
16
+ attr_accessor :user_group
17
+
18
+ # @type [String] user_group_hash
19
+ attr_accessor :user_group_hash
20
+
21
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
22
+ attr_accessor :unknown_json_fields
23
+
24
+ def initialize
25
+ clear
26
+ end
27
+
28
+ def clear
29
+ @user_group = Comet::UserGroup.new
30
+ @user_group_hash = ''
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, "'json_string' expected String, got #{json_string.class}" 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, "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
44
+
45
+ obj.each do |k, v|
46
+ case k
47
+ when 'UserGroup'
48
+ @user_group = Comet::UserGroup.new
49
+ @user_group.from_hash(v)
50
+ when 'UserGroupHash'
51
+ raise TypeError, "'v' expected String, got #{v.class}" unless v.is_a? String
52
+
53
+ @user_group_hash = v
54
+ else
55
+ @unknown_json_fields[k] = v
56
+ end
57
+ end
58
+ end
59
+
60
+ # @return [Hash] The complete object as a Ruby hash
61
+ def to_hash
62
+ ret = {}
63
+ ret['UserGroup'] = @user_group
64
+ ret['UserGroupHash'] = @user_group_hash
65
+ @unknown_json_fields.each do |k, v|
66
+ ret[k] = v
67
+ end
68
+ ret
69
+ end
70
+
71
+ # @return [Hash] The complete object as a Ruby hash
72
+ def to_h
73
+ to_hash
74
+ end
75
+
76
+ # @return [String] The complete object as a JSON string
77
+ def to_json(options = {})
78
+ to_hash.to_json(options)
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2020-2025 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
+ # GetUserGroupWithUsersResponse is a typed class wrapper around the underlying Comet Server API data structure.
13
+ class GetUserGroupWithUsersResponse
14
+
15
+ # @type [Comet::UserGroup] user_group
16
+ attr_accessor :user_group
17
+
18
+ # @type [Hash{String => Comet::UserProfileConfig}] users
19
+ attr_accessor :users
20
+
21
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
22
+ attr_accessor :unknown_json_fields
23
+
24
+ def initialize
25
+ clear
26
+ end
27
+
28
+ def clear
29
+ @user_group = Comet::UserGroup.new
30
+ @users = {}
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, "'json_string' expected String, got #{json_string.class}" 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, "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
44
+
45
+ obj.each do |k, v|
46
+ case k
47
+ when 'UserGroup'
48
+ @user_group = Comet::UserGroup.new
49
+ @user_group.from_hash(v)
50
+ when 'Users'
51
+ @users = {}
52
+ if v.nil?
53
+ @users = {}
54
+ else
55
+ v.each do |k1, v1|
56
+ @users[k1] = Comet::UserProfileConfig.new
57
+ @users[k1].from_hash(v1)
58
+ end
59
+ end
60
+ else
61
+ @unknown_json_fields[k] = v
62
+ end
63
+ end
64
+ end
65
+
66
+ # @return [Hash] The complete object as a Ruby hash
67
+ def to_hash
68
+ ret = {}
69
+ ret['UserGroup'] = @user_group
70
+ ret['Users'] = @users
71
+ @unknown_json_fields.each do |k, v|
72
+ ret[k] = v
73
+ end
74
+ ret
75
+ end
76
+
77
+ # @return [Hash] The complete object as a Ruby hash
78
+ def to_h
79
+ to_hash
80
+ end
81
+
82
+ # @return [String] The complete object as a JSON string
83
+ def to_json(options = {})
84
+ to_hash.to_json(options)
85
+ end
86
+ end
87
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (c) 2020-2025 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
+ # LoginProtectionOptions is a typed class wrapper around the underlying Comet Server API data structure.
13
+ class LoginProtectionOptions
14
+
15
+ # Enable this feature to block repeated failed login attempts to the Comet Server.
16
+ # @type [Boolean] enabled
17
+ attr_accessor :enabled
18
+
19
+ # The number of failed attempts before a cooldown is applied. If the feature is enabled, should be
20
+ # at least 1.
21
+ # @type [Number] failure_threshold
22
+ attr_accessor :failure_threshold
23
+
24
+ # The duration to block requests, in seconds. If the feature is enabled, should be at least 1
25
+ # second.
26
+ # @type [Number] cooldown_seconds
27
+ attr_accessor :cooldown_seconds
28
+
29
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
30
+ attr_accessor :unknown_json_fields
31
+
32
+ def initialize
33
+ clear
34
+ end
35
+
36
+ def clear
37
+ @failure_threshold = 0
38
+ @cooldown_seconds = 0
39
+ @unknown_json_fields = {}
40
+ end
41
+
42
+ # @param [String] json_string The complete object in JSON format
43
+ def from_json(json_string)
44
+ raise TypeError, "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
45
+
46
+ from_hash(JSON.parse(json_string))
47
+ end
48
+
49
+ # @param [Hash] obj The complete object as a Ruby hash
50
+ def from_hash(obj)
51
+ raise TypeError, "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
52
+
53
+ obj.each do |k, v|
54
+ case k
55
+ when 'Enabled'
56
+ @enabled = v
57
+ when 'FailureThreshold'
58
+ raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
59
+
60
+ @failure_threshold = v
61
+ when 'CooldownSeconds'
62
+ raise TypeError, "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
63
+
64
+ @cooldown_seconds = v
65
+ else
66
+ @unknown_json_fields[k] = v
67
+ end
68
+ end
69
+ end
70
+
71
+ # @return [Hash] The complete object as a Ruby hash
72
+ def to_hash
73
+ ret = {}
74
+ ret['Enabled'] = @enabled
75
+ ret['FailureThreshold'] = @failure_threshold
76
+ ret['CooldownSeconds'] = @cooldown_seconds
77
+ @unknown_json_fields.each do |k, v|
78
+ ret[k] = v
79
+ end
80
+ ret
81
+ end
82
+
83
+ # @return [Hash] The complete object as a Ruby hash
84
+ def to_h
85
+ to_hash
86
+ end
87
+
88
+ # @return [String] The complete object as a JSON string
89
+ def to_json(options = {})
90
+ to_hash.to_json(options)
91
+ end
92
+ end
93
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Copyright (c) 2020-2024 Comet Licensing Ltd.
3
+ # Copyright (c) 2020-2025 Comet Licensing Ltd.
4
4
  # Please see the LICENSE file for usage information.
5
5
  #
6
6
  # SPDX-License-Identifier: MIT