comet_backup_ruby_sdk 0.2.0 → 1.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 (138) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +47 -0
  3. data/Gemfile.lock +43 -0
  4. data/README.md +20 -4
  5. data/RELEASING.md +10 -0
  6. data/comet_backup_ruby_sdk.gemspec +1 -1
  7. data/lib/comet/comet_server.rb +562 -254
  8. data/lib/comet/definitions.rb +19 -4
  9. data/lib/comet/models/add_bucket_response_message.rb +15 -5
  10. data/lib/comet/models/admin_account_properties_response.rb +17 -2
  11. data/lib/comet/models/admin_email_options.rb +84 -0
  12. data/lib/comet/models/admin_resource_response.rb +13 -4
  13. data/lib/comet/models/admin_security_options.rb +18 -5
  14. data/lib/comet/models/admin_u2fregistration.rb +11 -3
  15. data/lib/comet/models/admin_user_permissions.rb +6 -2
  16. data/lib/comet/models/available_download.rb +10 -4
  17. data/lib/comet/models/azure_destination_location.rb +16 -7
  18. data/lib/comet/models/b2destination_location.rb +17 -6
  19. data/lib/comet/models/b2storage_extra_info.rb +6 -2
  20. data/lib/comet/models/b2transaction_totals.rb +15 -2
  21. data/lib/comet/models/b2virtual_storage_role_settings.rb +93 -0
  22. data/lib/comet/models/backup_job_advanced_options.rb +12 -2
  23. data/lib/comet/models/backup_job_detail.rb +53 -10
  24. data/lib/comet/models/backup_job_progress.rb +21 -2
  25. data/lib/comet/models/backup_rule_config.rb +43 -7
  26. data/lib/comet/models/backup_rule_event_triggers.rb +6 -2
  27. data/lib/comet/models/branding_options.rb +59 -25
  28. data/lib/comet/models/branding_properties.rb +51 -21
  29. data/lib/comet/models/browse_disk_drives_response.rb +11 -3
  30. data/lib/comet/models/browse_edbresponse.rb +11 -3
  31. data/lib/comet/models/browse_hvresponse.rb +11 -3
  32. data/lib/comet/models/browse_vssresponse.rb +11 -3
  33. data/lib/comet/models/bucket_properties.rb +24 -3
  34. data/lib/comet/models/bucket_usage_info.rb +8 -2
  35. data/lib/comet/models/comet_apiresponse_message.rb +11 -3
  36. data/lib/comet/models/comet_destination_location.rb +12 -5
  37. data/lib/comet/models/constellation_check_report.rb +12 -2
  38. data/lib/comet/models/constellation_stats.rb +18 -2
  39. data/lib/comet/models/constellation_status_apiresponse.rb +9 -4
  40. data/lib/comet/models/content_measurement.rb +12 -2
  41. data/lib/comet/models/content_measurement_component.rb +10 -3
  42. data/lib/comet/models/create_group_policy_response.rb +13 -4
  43. data/lib/comet/models/default_email_report_policy.rb +6 -2
  44. data/lib/comet/models/destination_config.rb +123 -32
  45. data/lib/comet/models/destination_location.rb +78 -28
  46. data/lib/comet/models/destination_statistics.rb +16 -3
  47. data/lib/comet/models/device_config.rb +9 -3
  48. data/lib/comet/models/disk_drive.rb +34 -7
  49. data/lib/comet/models/dispatcher_admin_sources_response.rb +12 -4
  50. data/lib/comet/models/dispatcher_stored_objects_response.rb +11 -3
  51. data/lib/comet/models/dispatcher_vault_snapshots_response.rb +11 -3
  52. data/lib/comet/models/edbfile_info.rb +12 -5
  53. data/lib/comet/models/email_options.rb +21 -8
  54. data/lib/comet/models/email_report_config.rb +10 -2
  55. data/lib/comet/models/email_report_generated_preview.rb +17 -6
  56. data/lib/comet/models/external_ldapauthentication_source_settings.rb +102 -0
  57. data/lib/comet/models/extra_file_exclusion.rb +11 -3
  58. data/lib/comet/models/ftpdestination_location.rb +23 -6
  59. data/lib/comet/models/get_group_policy_response.rb +14 -4
  60. data/lib/comet/models/get_profile_and_hash_response_message.rb +14 -4
  61. data/lib/comet/models/get_profile_hash_response_message.rb +13 -4
  62. data/lib/comet/models/group_policy.rb +18 -3
  63. data/lib/comet/models/hyper_vmachine_info.rb +10 -4
  64. data/lib/comet/models/install_creds.rb +99 -0
  65. data/lib/comet/models/install_token.rb +117 -0
  66. data/lib/comet/models/install_token_response.rb +92 -0
  67. data/lib/comet/models/job_entry.rb +93 -0
  68. data/lib/comet/models/live_user_connection.rb +20 -7
  69. data/lib/comet/models/local_destination_location.rb +15 -5
  70. data/lib/comet/models/mac_oscode_sign_properties.rb +21 -6
  71. data/lib/comet/models/mongo_dbconnection.rb +33 -14
  72. data/lib/comet/models/new_bucket_detail.rb +10 -4
  73. data/lib/comet/models/news_entry.rb +20 -3
  74. data/lib/comet/models/organization.rb +145 -0
  75. data/lib/comet/models/organization_response.rb +101 -0
  76. data/lib/comet/models/osinfo.rb +12 -5
  77. data/lib/comet/models/partition.rb +32 -8
  78. data/lib/comet/models/private_branding_properties.rb +39 -15
  79. data/lib/comet/models/protected_item_engine_type_policy.rb +7 -3
  80. data/lib/comet/models/public_branding_properties.rb +18 -8
  81. data/lib/comet/models/remote_server_address.rb +19 -7
  82. data/lib/comet/models/remote_storage_option.rb +28 -7
  83. data/lib/comet/models/replicator_state_apiresponse.rb +40 -4
  84. data/lib/comet/models/request_storage_vault_response_message.rb +13 -4
  85. data/lib/comet/models/restore_job_advanced_options.rb +15 -4
  86. data/lib/comet/models/retention_policy.rb +9 -2
  87. data/lib/comet/models/retention_range.rb +30 -2
  88. data/lib/comet/models/s3destination_location.rb +16 -7
  89. data/lib/comet/models/schedule_config.rb +15 -2
  90. data/lib/comet/models/search_clause.rb +14 -6
  91. data/lib/comet/models/server_config_options_branding_fragment.rb +7 -2
  92. data/lib/comet/models/server_config_options_software_build_role_fragment.rb +7 -2
  93. data/lib/comet/models/server_meta_version_info.rb +45 -7
  94. data/lib/comet/models/session_key_regenerated_response.rb +15 -5
  95. data/lib/comet/models/sftpdestination_location.rb +21 -8
  96. data/lib/comet/models/size_measurement.rb +15 -2
  97. data/lib/comet/models/software_build_role_options.rb +6 -2
  98. data/lib/comet/models/software_update_news_response.rb +13 -6
  99. data/lib/comet/models/source_basic_info.rb +11 -3
  100. data/lib/comet/models/source_config.rb +38 -8
  101. data/lib/comet/models/source_statistics.rb +7 -2
  102. data/lib/comet/models/spanned_destination_location.rb +6 -2
  103. data/lib/comet/models/spanned_storage_extra_info.rb +6 -2
  104. data/lib/comet/models/sshconnection.rb +19 -7
  105. data/lib/comet/models/stat_result.rb +18 -2
  106. data/lib/comet/models/storage_free_space_info.rb +14 -2
  107. data/lib/comet/models/storage_vault_provider_policy.rb +8 -2
  108. data/lib/comet/models/stored_object.rb +27 -5
  109. data/lib/comet/models/streamable_event.rb +18 -2
  110. data/lib/comet/models/swift_destination_location.rb +32 -15
  111. data/lib/comet/models/test_response.rb +11 -3
  112. data/lib/comet/models/totp_regenerated_response.rb +17 -6
  113. data/lib/comet/models/u2fregister_request.rb +10 -4
  114. data/lib/comet/models/u2fregistered_key.rb +12 -5
  115. data/lib/comet/models/u2fregistration_challenge_response.rb +15 -5
  116. data/lib/comet/models/u2fsign_request.rb +12 -5
  117. data/lib/comet/models/u2fsign_response.rb +14 -6
  118. data/lib/comet/models/uninstall_config.rb +6 -2
  119. data/lib/comet/models/update_campaign_device_status.rb +9 -2
  120. data/lib/comet/models/update_campaign_options.rb +6 -2
  121. data/lib/comet/models/update_campaign_properties.rb +11 -3
  122. data/lib/comet/models/update_campaign_status.rb +11 -3
  123. data/lib/comet/models/update_campaign_status_device_entry.rb +13 -4
  124. data/lib/comet/models/user_custom_email_settings.rb +6 -2
  125. data/lib/comet/models/user_on_server.rb +11 -3
  126. data/lib/comet/models/user_policy.rb +22 -2
  127. data/lib/comet/models/user_profile_config.rb +52 -12
  128. data/lib/comet/models/user_profile_fragment.rb +8 -3
  129. data/lib/comet/models/vault_snapshot.rb +13 -4
  130. data/lib/comet/models/vsscomponent.rb +12 -5
  131. data/lib/comet/models/vsswriter_info.rb +8 -3
  132. data/lib/comet/models/wasabi_virtual_storage_role_settings.rb +93 -0
  133. data/lib/comet/models/web_interface_branding_properties.rb +14 -6
  134. data/lib/comet/models/webhook_option.rb +10 -3
  135. data/lib/comet/models/win_smbauth.rb +15 -5
  136. data/lib/comet/models/windows_code_sign_properties.rb +26 -9
  137. data/lib/comet_backup_ruby_sdk.rb +10 -0
  138. metadata +15 -2
@@ -135,6 +135,15 @@ module Comet
135
135
  # EmailReportType:
136
136
  EMAILREPORTTYPE_SUMMARY = 1
137
137
 
138
+ # FtpsModeType:
139
+ FTPS_MODE_PLAINTEXT = 0
140
+
141
+ # FtpsModeType:
142
+ FTPS_MODE_IMPLICIT = 1
143
+
144
+ # FtpsModeType:
145
+ FTPS_MODE_EXPLICIT = 2
146
+
138
147
  # Severity:
139
148
  SEVERITY_INFO = 'I'
140
149
 
@@ -356,13 +365,13 @@ module Comet
356
365
 
357
366
  DEFAULT_TIMEZONE = 'UTC'
358
367
 
359
- APPLICATION_VERSION = '20.6.8'
368
+ APPLICATION_VERSION = '20.9.10'
360
369
 
361
370
  APPLICATION_VERSION_MAJOR = 20
362
371
 
363
- APPLICATION_VERSION_MINOR = 6
372
+ APPLICATION_VERSION_MINOR = 9
364
373
 
365
- APPLICATION_VERSION_REVISION = 8
374
+ APPLICATION_VERSION_REVISION = 10
366
375
 
367
376
  RELEASE_CODENAME = 'Voyager'
368
377
 
@@ -517,6 +526,12 @@ module Comet
517
526
  # RemoteServerType:
518
527
  REMOTESERVER_WASABI = 'wasabi'
519
528
 
529
+ LDAPSECURITYMETHOD_PLAIN = 'plain'
530
+
531
+ LDAPSECURITYMETHOD_LDAPS = 'ldaps'
532
+
533
+ LDAPSECURITYMETHOD_STARTTLS = 'starttls'
534
+
520
535
  # MacOSCodesignLevel:
521
536
  MACOSCODESIGN_LEVEL_SIGN = 0
522
537
 
@@ -526,7 +541,7 @@ module Comet
526
541
  # MacOSCodesignLevel:
527
542
  MACOSCODESIGN_LEVEL_SIGN_NOTARISE_STAPLE = 2
528
543
 
529
- # StreamableEventType:
544
+ # StreamableEventType: Event is emitted when the webhook is registered, or when the server starts up. The Data associated is ServerMetaVersionInfo
530
545
  SEVT_META_HELLO = 4000
531
546
 
532
547
  # StreamableEventType: Data is the profile object
@@ -30,34 +30,44 @@ module Comet
30
30
  attr_accessor :unknown_json_fields
31
31
 
32
32
  def initialize
33
+ clear
34
+ end
35
+
36
+ def clear
37
+ @status = 0
38
+ @message = ''
39
+ @new_bucket_id = ''
40
+ @new_bucket_key = ''
33
41
  @unknown_json_fields = {}
34
42
  end
35
43
 
36
44
  # @param [String] json_string The complete object in JSON format
37
45
  def from_json(json_string)
38
- raise TypeError 'expected string' unless json_string.is_a? String
46
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
39
47
 
40
48
  from_hash(JSON.parse(json_string))
41
49
  end
42
50
 
43
51
  # @param [Hash] obj The complete object as a Ruby hash
44
52
  def from_hash(obj)
45
- raise TypeError 'expected hash' unless obj.is_a? Hash
53
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
46
54
 
47
55
  obj.each do |k, v|
48
56
  case k
49
57
  when 'Status'
58
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
59
+
50
60
  @status = v
51
61
  when 'Message'
52
- raise TypeError 'expected string' unless v.is_a? String
62
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
53
63
 
54
64
  @message = v
55
65
  when 'NewBucketID'
56
- raise TypeError 'expected string' unless v.is_a? String
66
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
57
67
 
58
68
  @new_bucket_id = v
59
69
  when 'NewBucketKey'
60
- raise TypeError 'expected string' unless v.is_a? String
70
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
61
71
 
62
72
  @new_bucket_key = v
63
73
  else
@@ -14,6 +14,9 @@ module Comet
14
14
  # AdminAccountPropertiesResponse is a typed class wrapper around the underlying Comet Server API data structure.
15
15
  class AdminAccountPropertiesResponse
16
16
 
17
+ # @type [String] organization_id
18
+ attr_accessor :organization_id
19
+
17
20
  # @type [Comet::AdminUserPermissions] permissions
18
21
  attr_accessor :permissions
19
22
 
@@ -24,22 +27,33 @@ module Comet
24
27
  attr_accessor :unknown_json_fields
25
28
 
26
29
  def initialize
30
+ clear
31
+ end
32
+
33
+ def clear
34
+ @organization_id = ''
35
+ @permissions = Comet::AdminUserPermissions.new
36
+ @security = Comet::AdminSecurityOptions.new
27
37
  @unknown_json_fields = {}
28
38
  end
29
39
 
30
40
  # @param [String] json_string The complete object in JSON format
31
41
  def from_json(json_string)
32
- raise TypeError 'expected string' unless json_string.is_a? String
42
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
33
43
 
34
44
  from_hash(JSON.parse(json_string))
35
45
  end
36
46
 
37
47
  # @param [Hash] obj The complete object as a Ruby hash
38
48
  def from_hash(obj)
39
- raise TypeError 'expected hash' unless obj.is_a? Hash
49
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
40
50
 
41
51
  obj.each do |k, v|
42
52
  case k
53
+ when 'OrganizationID'
54
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
55
+
56
+ @organization_id = v
43
57
  when 'Permissions'
44
58
  @permissions = Comet::AdminUserPermissions.new
45
59
  @permissions.from_hash(v)
@@ -55,6 +69,7 @@ module Comet
55
69
  # @return [Hash] The complete object as a Ruby hash
56
70
  def to_hash
57
71
  ret = {}
72
+ ret['OrganizationID'] = @organization_id
58
73
  ret['Permissions'] = @permissions
59
74
  ret['Security'] = @security
60
75
  @unknown_json_fields.each do |k, v|
@@ -0,0 +1,84 @@
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
+ # AdminEmailOptions is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class AdminEmailOptions
16
+
17
+ # @type [String] from_email
18
+ attr_accessor :from_email
19
+
20
+ # @type [String] from_name
21
+ attr_accessor :from_name
22
+
23
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
24
+ attr_accessor :unknown_json_fields
25
+
26
+ def initialize
27
+ clear
28
+ end
29
+
30
+ def clear
31
+ @from_email = ''
32
+ @from_name = ''
33
+ @unknown_json_fields = {}
34
+ end
35
+
36
+ # @param [String] json_string The complete object in JSON format
37
+ def from_json(json_string)
38
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
39
+
40
+ from_hash(JSON.parse(json_string))
41
+ end
42
+
43
+ # @param [Hash] obj The complete object as a Ruby hash
44
+ def from_hash(obj)
45
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
46
+
47
+ obj.each do |k, v|
48
+ case k
49
+ when 'FromEmail'
50
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
51
+
52
+ @from_email = v
53
+ when 'FromName'
54
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
55
+
56
+ @from_name = v
57
+ else
58
+ @unknown_json_fields[k] = v
59
+ end
60
+ end
61
+ end
62
+
63
+ # @return [Hash] The complete object as a Ruby hash
64
+ def to_hash
65
+ ret = {}
66
+ ret['FromEmail'] = @from_email
67
+ ret['FromName'] = @from_name
68
+ @unknown_json_fields.each do |k, v|
69
+ ret[k] = v
70
+ end
71
+ ret
72
+ end
73
+
74
+ # @return [Hash] The complete object as a Ruby hash
75
+ def to_h
76
+ to_hash
77
+ end
78
+
79
+ # @return [String] The complete object as a JSON string
80
+ def to_json(options = {})
81
+ to_hash.to_json(options)
82
+ end
83
+ end
84
+ end
@@ -27,30 +27,39 @@ module Comet
27
27
  attr_accessor :unknown_json_fields
28
28
 
29
29
  def initialize
30
+ clear
31
+ end
32
+
33
+ def clear
34
+ @status = 0
35
+ @message = ''
36
+ @resource_hash = ''
30
37
  @unknown_json_fields = {}
31
38
  end
32
39
 
33
40
  # @param [String] json_string The complete object in JSON format
34
41
  def from_json(json_string)
35
- raise TypeError 'expected string' unless json_string.is_a? String
42
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
36
43
 
37
44
  from_hash(JSON.parse(json_string))
38
45
  end
39
46
 
40
47
  # @param [Hash] obj The complete object as a Ruby hash
41
48
  def from_hash(obj)
42
- raise TypeError 'expected hash' unless obj.is_a? Hash
49
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
43
50
 
44
51
  obj.each do |k, v|
45
52
  case k
46
53
  when 'Status'
54
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
55
+
47
56
  @status = v
48
57
  when 'Message'
49
- raise TypeError 'expected string' unless v.is_a? String
58
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
50
59
 
51
60
  @message = v
52
61
  when 'ResourceHash'
53
- raise TypeError 'expected string' unless v.is_a? String
62
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
54
63
 
55
64
  @resource_hash = v
56
65
  else
@@ -45,27 +45,38 @@ module Comet
45
45
  attr_accessor :unknown_json_fields
46
46
 
47
47
  def initialize
48
+ clear
49
+ end
50
+
51
+ def clear
52
+ @password_format = 0
53
+ @password = ''
48
54
  @u2fregistrations = []
55
+ @totpkey_encryption_format = 0
56
+ @totpkey = ''
57
+ @ipwhitelist = ''
49
58
  @unknown_json_fields = {}
50
59
  end
51
60
 
52
61
  # @param [String] json_string The complete object in JSON format
53
62
  def from_json(json_string)
54
- raise TypeError 'expected string' unless json_string.is_a? String
63
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
55
64
 
56
65
  from_hash(JSON.parse(json_string))
57
66
  end
58
67
 
59
68
  # @param [Hash] obj The complete object as a Ruby hash
60
69
  def from_hash(obj)
61
- raise TypeError 'expected hash' unless obj.is_a? Hash
70
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
62
71
 
63
72
  obj.each do |k, v|
64
73
  case k
65
74
  when 'PasswordFormat'
75
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
76
+
66
77
  @password_format = v
67
78
  when 'Password'
68
- raise TypeError 'expected string' unless v.is_a? String
79
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
69
80
 
70
81
  @password = v
71
82
  when 'AllowPasswordLogin'
@@ -85,13 +96,15 @@ module Comet
85
96
  end
86
97
  end
87
98
  when 'TOTPKeyEncryptionFormat'
99
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
100
+
88
101
  @totpkey_encryption_format = v
89
102
  when 'TOTPKey'
90
- raise TypeError 'expected string' unless v.is_a? String
103
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
91
104
 
92
105
  @totpkey = v
93
106
  when 'IPWhitelist'
94
- raise TypeError 'expected string' unless v.is_a? String
107
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
95
108
 
96
109
  @ipwhitelist = v
97
110
  else
@@ -28,28 +28,36 @@ module Comet
28
28
  attr_accessor :unknown_json_fields
29
29
 
30
30
  def initialize
31
+ clear
32
+ end
33
+
34
+ def clear
35
+ @description = ''
36
+ @register_time = 0
31
37
  @registration = []
32
38
  @unknown_json_fields = {}
33
39
  end
34
40
 
35
41
  # @param [String] json_string The complete object in JSON format
36
42
  def from_json(json_string)
37
- raise TypeError 'expected string' unless json_string.is_a? String
43
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
38
44
 
39
45
  from_hash(JSON.parse(json_string))
40
46
  end
41
47
 
42
48
  # @param [Hash] obj The complete object as a Ruby hash
43
49
  def from_hash(obj)
44
- raise TypeError 'expected hash' unless obj.is_a? Hash
50
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
45
51
 
46
52
  obj.each do |k, v|
47
53
  case k
48
54
  when 'Description'
49
- raise TypeError 'expected string' unless v.is_a? String
55
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
50
56
 
51
57
  @description = v
52
58
  when 'RegisterTime'
59
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
60
+
53
61
  @register_time = v
54
62
  when 'Registration'
55
63
  @registration = Base64.decode64(v)
@@ -33,19 +33,23 @@ module Comet
33
33
  attr_accessor :unknown_json_fields
34
34
 
35
35
  def initialize
36
+ clear
37
+ end
38
+
39
+ def clear
36
40
  @unknown_json_fields = {}
37
41
  end
38
42
 
39
43
  # @param [String] json_string The complete object in JSON format
40
44
  def from_json(json_string)
41
- raise TypeError 'expected string' unless json_string.is_a? String
45
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
42
46
 
43
47
  from_hash(JSON.parse(json_string))
44
48
  end
45
49
 
46
50
  # @param [Hash] obj The complete object as a Ruby hash
47
51
  def from_hash(obj)
48
- raise TypeError 'expected hash' unless obj.is_a? Hash
52
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
49
53
 
50
54
  obj.each do |k, v|
51
55
  case k
@@ -27,28 +27,34 @@ module Comet
27
27
  attr_accessor :unknown_json_fields
28
28
 
29
29
  def initialize
30
+ clear
31
+ end
32
+
33
+ def clear
34
+ @category = ''
35
+ @description = ''
30
36
  @unknown_json_fields = {}
31
37
  end
32
38
 
33
39
  # @param [String] json_string The complete object in JSON format
34
40
  def from_json(json_string)
35
- raise TypeError 'expected string' unless json_string.is_a? String
41
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
36
42
 
37
43
  from_hash(JSON.parse(json_string))
38
44
  end
39
45
 
40
46
  # @param [Hash] obj The complete object as a Ruby hash
41
47
  def from_hash(obj)
42
- raise TypeError 'expected hash' unless obj.is_a? Hash
48
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
43
49
 
44
50
  obj.each do |k, v|
45
51
  case k
46
52
  when 'Category'
47
- raise TypeError 'expected string' unless v.is_a? String
53
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
48
54
 
49
55
  @category = v
50
56
  when 'Description'
51
- raise TypeError 'expected string' unless v.is_a? String
57
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
52
58
 
53
59
  @description = v
54
60
  when 'Recommended'