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
@@ -24,28 +24,34 @@ module Comet
24
24
  attr_accessor :unknown_json_fields
25
25
 
26
26
  def initialize
27
+ clear
28
+ end
29
+
30
+ def clear
31
+ @new_bucket_id = ''
32
+ @new_bucket_key = ''
27
33
  @unknown_json_fields = {}
28
34
  end
29
35
 
30
36
  # @param [String] json_string The complete object in JSON format
31
37
  def from_json(json_string)
32
- raise TypeError 'expected string' unless json_string.is_a? String
38
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
33
39
 
34
40
  from_hash(JSON.parse(json_string))
35
41
  end
36
42
 
37
43
  # @param [Hash] obj The complete object as a Ruby hash
38
44
  def from_hash(obj)
39
- raise TypeError 'expected hash' unless obj.is_a? Hash
45
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
40
46
 
41
47
  obj.each do |k, v|
42
48
  case k
43
49
  when 'NewBucketID'
44
- raise TypeError 'expected string' unless v.is_a? String
50
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
45
51
 
46
52
  @new_bucket_id = v
47
53
  when 'NewBucketKey'
48
- raise TypeError 'expected string' unless v.is_a? String
54
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
49
55
 
50
56
  @new_bucket_key = v
51
57
  else
@@ -14,6 +14,9 @@ module Comet
14
14
  # NewsEntry is a typed class wrapper around the underlying Comet Server API data structure.
15
15
  class NewsEntry
16
16
 
17
+ # @type [String] organization_id
18
+ attr_accessor :organization_id
19
+
17
20
  # @type [Number] date_time
18
21
  attr_accessor :date_time
19
22
 
@@ -24,26 +27,39 @@ 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
+ @date_time = 0
36
+ @text_content = ''
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 'DateTime'
58
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
59
+
44
60
  @date_time = v
45
61
  when 'TextContent'
46
- raise TypeError 'expected string' unless v.is_a? String
62
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
47
63
 
48
64
  @text_content = v
49
65
  else
@@ -55,6 +71,7 @@ module Comet
55
71
  # @return [Hash] The complete object as a Ruby hash
56
72
  def to_hash
57
73
  ret = {}
74
+ ret['OrganizationID'] = @organization_id
58
75
  ret['DateTime'] = @date_time
59
76
  ret['TextContent'] = @text_content
60
77
  @unknown_json_fields.each do |k, v|
@@ -0,0 +1,145 @@
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
+ # Organization is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class Organization
16
+
17
+ # @type [String] name
18
+ attr_accessor :name
19
+
20
+ # @type [Array<String>] hosts
21
+ attr_accessor :hosts
22
+
23
+ # @type [Comet::SoftwareBuildRoleOptions] software_build_role
24
+ attr_accessor :software_build_role
25
+
26
+ # @type [Comet::BrandingOptions] branding
27
+ attr_accessor :branding
28
+
29
+ # @type [Array<Comet::RemoteStorageOption>] remote_storage
30
+ attr_accessor :remote_storage
31
+
32
+ # @type [Hash{String => Comet::WebhookOption}] webhook_options
33
+ attr_accessor :webhook_options
34
+
35
+ # @type [Comet::AdminEmailOptions] email
36
+ attr_accessor :email
37
+
38
+ # @type [Hash] Hidden storage to preserve future properties for non-destructive roundtrip operations
39
+ attr_accessor :unknown_json_fields
40
+
41
+ def initialize
42
+ clear
43
+ end
44
+
45
+ def clear
46
+ @name = ''
47
+ @hosts = []
48
+ @software_build_role = Comet::SoftwareBuildRoleOptions.new
49
+ @branding = Comet::BrandingOptions.new
50
+ @remote_storage = []
51
+ @webhook_options = {}
52
+ @email = Comet::AdminEmailOptions.new
53
+ @unknown_json_fields = {}
54
+ end
55
+
56
+ # @param [String] json_string The complete object in JSON format
57
+ def from_json(json_string)
58
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
59
+
60
+ from_hash(JSON.parse(json_string))
61
+ end
62
+
63
+ # @param [Hash] obj The complete object as a Ruby hash
64
+ def from_hash(obj)
65
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
66
+
67
+ obj.each do |k, v|
68
+ case k
69
+ when 'Name'
70
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
71
+
72
+ @name = v
73
+ when 'Hosts'
74
+ if v.nil?
75
+ @hosts = []
76
+ else
77
+ @hosts = Array.new(v.length)
78
+ v.each_with_index do |v1, i1|
79
+ raise TypeError "'v1' expected String, got #{v1.class}" unless v1.is_a? String
80
+
81
+ @hosts[i1] = v1
82
+ end
83
+ end
84
+ when 'SoftwareBuildRole'
85
+ @software_build_role = Comet::SoftwareBuildRoleOptions.new
86
+ @software_build_role.from_hash(v)
87
+ when 'Branding'
88
+ @branding = Comet::BrandingOptions.new
89
+ @branding.from_hash(v)
90
+ when 'RemoteStorage'
91
+ if v.nil?
92
+ @remote_storage = []
93
+ else
94
+ @remote_storage = Array.new(v.length)
95
+ v.each_with_index do |v1, i1|
96
+ @remote_storage[i1] = Comet::RemoteStorageOption.new
97
+ @remote_storage[i1].from_hash(v1)
98
+ end
99
+ end
100
+ when 'WebhookOptions'
101
+ @webhook_options = {}
102
+ if v.nil?
103
+ @webhook_options = {}
104
+ else
105
+ v.each do |k1, v1|
106
+ @webhook_options[k1] = Comet::WebhookOption.new
107
+ @webhook_options[k1].from_hash(v1)
108
+ end
109
+ end
110
+ when 'Email'
111
+ @email = Comet::AdminEmailOptions.new
112
+ @email.from_hash(v)
113
+ else
114
+ @unknown_json_fields[k] = v
115
+ end
116
+ end
117
+ end
118
+
119
+ # @return [Hash] The complete object as a Ruby hash
120
+ def to_hash
121
+ ret = {}
122
+ ret['Name'] = @name
123
+ ret['Hosts'] = @hosts
124
+ ret['SoftwareBuildRole'] = @software_build_role
125
+ ret['Branding'] = @branding
126
+ ret['RemoteStorage'] = @remote_storage
127
+ ret['WebhookOptions'] = @webhook_options
128
+ ret['Email'] = @email
129
+ @unknown_json_fields.each do |k, v|
130
+ ret[k] = v
131
+ end
132
+ ret
133
+ end
134
+
135
+ # @return [Hash] The complete object as a Ruby hash
136
+ def to_h
137
+ to_hash
138
+ end
139
+
140
+ # @return [String] The complete object as a JSON string
141
+ def to_json(options = {})
142
+ to_hash.to_json(options)
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,101 @@
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
+ # OrganizationResponse is a typed class wrapper around the underlying Comet Server API data structure.
15
+ class OrganizationResponse
16
+
17
+ # @type [Number] status
18
+ attr_accessor :status
19
+
20
+ # @type [String] message
21
+ attr_accessor :message
22
+
23
+ # @type [String] id
24
+ attr_accessor :id
25
+
26
+ # @type [Comet::Organization] organization
27
+ attr_accessor :organization
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
+ @status = 0
38
+ @message = ''
39
+ @id = ''
40
+ @organization = Comet::Organization.new
41
+ @unknown_json_fields = {}
42
+ end
43
+
44
+ # @param [String] json_string The complete object in JSON format
45
+ def from_json(json_string)
46
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
47
+
48
+ from_hash(JSON.parse(json_string))
49
+ end
50
+
51
+ # @param [Hash] obj The complete object as a Ruby hash
52
+ def from_hash(obj)
53
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
54
+
55
+ obj.each do |k, v|
56
+ case k
57
+ when 'Status'
58
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
59
+
60
+ @status = v
61
+ when 'Message'
62
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
63
+
64
+ @message = v
65
+ when 'ID'
66
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
67
+
68
+ @id = v
69
+ when 'Organization'
70
+ @organization = Comet::Organization.new
71
+ @organization.from_hash(v)
72
+ else
73
+ @unknown_json_fields[k] = v
74
+ end
75
+ end
76
+ end
77
+
78
+ # @return [Hash] The complete object as a Ruby hash
79
+ def to_hash
80
+ ret = {}
81
+ ret['Status'] = @status
82
+ ret['Message'] = @message
83
+ ret['ID'] = @id
84
+ ret['Organization'] = @organization
85
+ @unknown_json_fields.each do |k, v|
86
+ ret[k] = v
87
+ end
88
+ ret
89
+ end
90
+
91
+ # @return [Hash] The complete object as a Ruby hash
92
+ def to_h
93
+ to_hash
94
+ end
95
+
96
+ # @return [String] The complete object as a JSON string
97
+ def to_json(options = {})
98
+ to_hash.to_json(options)
99
+ end
100
+ end
101
+ end
@@ -27,32 +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
+ @version = ''
35
+ @distribution = ''
36
+ @build = ''
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 'version'
47
- raise TypeError 'expected string' unless v.is_a? String
54
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
48
55
 
49
56
  @version = v
50
57
  when 'distribution'
51
- raise TypeError 'expected string' unless v.is_a? String
58
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
52
59
 
53
60
  @distribution = v
54
61
  when 'build'
55
- raise TypeError 'expected string' unless v.is_a? String
62
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
56
63
 
57
64
  @build = v
58
65
  else
@@ -51,41 +51,55 @@ module Comet
51
51
  attr_accessor :unknown_json_fields
52
52
 
53
53
  def initialize
54
+ clear
55
+ end
56
+
57
+ def clear
58
+ @device_name = ''
59
+ @filesystem = ''
60
+ @volume_name = ''
61
+ @volume_guid = ''
62
+ @volume_serial = ''
54
63
  @mount_points = []
64
+ @read_offset = 0
65
+ @size = 0
66
+ @used_size = 0
67
+ @flags = 0
68
+ @bytes_per_filesystem_cluster = 0
55
69
  @unknown_json_fields = {}
56
70
  end
57
71
 
58
72
  # @param [String] json_string The complete object in JSON format
59
73
  def from_json(json_string)
60
- raise TypeError 'expected string' unless json_string.is_a? String
74
+ raise TypeError "'json_string' expected String, got #{json_string.class}" unless json_string.is_a? String
61
75
 
62
76
  from_hash(JSON.parse(json_string))
63
77
  end
64
78
 
65
79
  # @param [Hash] obj The complete object as a Ruby hash
66
80
  def from_hash(obj)
67
- raise TypeError 'expected hash' unless obj.is_a? Hash
81
+ raise TypeError "'obj' expected Hash, got #{obj.class}" unless obj.is_a? Hash
68
82
 
69
83
  obj.each do |k, v|
70
84
  case k
71
85
  when 'DeviceName'
72
- raise TypeError 'expected string' unless v.is_a? String
86
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
73
87
 
74
88
  @device_name = v
75
89
  when 'Filesystem'
76
- raise TypeError 'expected string' unless v.is_a? String
90
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
77
91
 
78
92
  @filesystem = v
79
93
  when 'VolumeName'
80
- raise TypeError 'expected string' unless v.is_a? String
94
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
81
95
 
82
96
  @volume_name = v
83
97
  when 'VolumeGuid'
84
- raise TypeError 'expected string' unless v.is_a? String
98
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
85
99
 
86
100
  @volume_guid = v
87
101
  when 'VolumeSerial'
88
- raise TypeError 'expected string' unless v.is_a? String
102
+ raise TypeError "'v' expected String, got #{v.class}" unless v.is_a? String
89
103
 
90
104
  @volume_serial = v
91
105
  when 'MountPoints'
@@ -94,20 +108,30 @@ module Comet
94
108
  else
95
109
  @mount_points = Array.new(v.length)
96
110
  v.each_with_index do |v1, i1|
97
- raise TypeError 'expected string' unless v1.is_a? String
111
+ raise TypeError "'v1' expected String, got #{v1.class}" unless v1.is_a? String
98
112
 
99
113
  @mount_points[i1] = v1
100
114
  end
101
115
  end
102
116
  when 'ReadOffset'
117
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
118
+
103
119
  @read_offset = v
104
120
  when 'Size'
121
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
122
+
105
123
  @size = v
106
124
  when 'UsedSize'
125
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
126
+
107
127
  @used_size = v
108
128
  when 'Flags'
129
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
130
+
109
131
  @flags = v
110
132
  when 'BytesPerFilesystemCluster'
133
+ raise TypeError "'v' expected Numeric, got #{v.class}" unless v.is_a? Numeric
134
+
111
135
  @bytes_per_filesystem_cluster = v
112
136
  else
113
137
  @unknown_json_fields[k] = v