mailslurp_client 15.5.5 → 15.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mailslurp_client/api/api_internal_controller_api.rb +89 -0
  3. data/lib/mailslurp_client/api/bounce_controller_api.rb +64 -0
  4. data/lib/mailslurp_client/api/email_verification_controller_api.rb +179 -0
  5. data/lib/mailslurp_client/api/mail_server_controller_api.rb +2 -2
  6. data/lib/mailslurp_client/models/alias_projection.rb +13 -13
  7. data/lib/mailslurp_client/models/attachment_projection.rb +25 -25
  8. data/lib/mailslurp_client/models/bounce_recipient.rb +0 -5
  9. data/lib/mailslurp_client/models/bounced_recipient_dto.rb +0 -5
  10. data/lib/mailslurp_client/models/email_projection.rb +12 -12
  11. data/lib/mailslurp_client/models/email_validation_request.rb +276 -0
  12. data/lib/mailslurp_client/models/filter_bounced_recipients_options.rb +213 -0
  13. data/lib/mailslurp_client/models/filter_bounced_recipients_result.rb +213 -0
  14. data/lib/mailslurp_client/models/get_or_create_saml_user_options.rb +234 -0
  15. data/lib/mailslurp_client/models/page_alias.rb +19 -19
  16. data/lib/mailslurp_client/models/page_attachment_entity.rb +19 -19
  17. data/lib/mailslurp_client/models/page_bounced_email.rb +19 -19
  18. data/lib/mailslurp_client/models/page_bounced_recipients.rb +19 -19
  19. data/lib/mailslurp_client/models/page_contact_projection.rb +19 -19
  20. data/lib/mailslurp_client/models/page_email_preview.rb +19 -19
  21. data/lib/mailslurp_client/models/page_email_projection.rb +19 -19
  22. data/lib/mailslurp_client/models/page_email_validation_request.rb +308 -0
  23. data/lib/mailslurp_client/models/page_expired_inbox_record_projection.rb +19 -19
  24. data/lib/mailslurp_client/models/page_group_projection.rb +19 -19
  25. data/lib/mailslurp_client/models/page_inbox_forwarder_dto.rb +19 -19
  26. data/lib/mailslurp_client/models/page_inbox_projection.rb +19 -19
  27. data/lib/mailslurp_client/models/page_inbox_ruleset_dto.rb +19 -19
  28. data/lib/mailslurp_client/models/page_missed_email_projection.rb +19 -19
  29. data/lib/mailslurp_client/models/page_organization_inbox_projection.rb +19 -19
  30. data/lib/mailslurp_client/models/page_template_projection.rb +19 -19
  31. data/lib/mailslurp_client/models/page_thread_projection.rb +19 -19
  32. data/lib/mailslurp_client/models/page_tracking_pixel_projection.rb +19 -19
  33. data/lib/mailslurp_client/models/page_unknown_missed_email_projection.rb +19 -19
  34. data/lib/mailslurp_client/models/page_webhook_projection.rb +19 -19
  35. data/lib/mailslurp_client/models/page_webhook_result.rb +19 -19
  36. data/lib/mailslurp_client/models/send_email_options.rb +36 -4
  37. data/lib/mailslurp_client/models/sent_email_dto.rb +13 -4
  38. data/lib/mailslurp_client/models/sent_email_projection.rb +17 -17
  39. data/lib/mailslurp_client/models/template_projection.rb +18 -18
  40. data/lib/mailslurp_client/models/tracking_pixel_projection.rb +10 -10
  41. data/lib/mailslurp_client/models/user_dto.rb +438 -0
  42. data/lib/mailslurp_client/models/validate_email_address_list_options.rb +213 -0
  43. data/lib/mailslurp_client/models/validate_email_address_list_result.rb +245 -0
  44. data/lib/mailslurp_client/version.rb +1 -1
  45. data/lib/mailslurp_client.rb +10 -0
  46. metadata +12 -2
@@ -23,10 +23,10 @@ module MailSlurpClient
23
23
 
24
24
  attr_accessor :inbox_id
25
25
 
26
- attr_accessor :to
27
-
28
26
  attr_accessor :attachments
29
27
 
28
+ attr_accessor :to
29
+
30
30
  attr_accessor :bcc
31
31
 
32
32
  attr_accessor :cc
@@ -48,8 +48,8 @@ module MailSlurpClient
48
48
  :'from' => :'from',
49
49
  :'subject' => :'subject',
50
50
  :'inbox_id' => :'inboxId',
51
- :'to' => :'to',
52
51
  :'attachments' => :'attachments',
52
+ :'to' => :'to',
53
53
  :'bcc' => :'bcc',
54
54
  :'cc' => :'cc',
55
55
  :'created_at' => :'createdAt',
@@ -67,8 +67,8 @@ module MailSlurpClient
67
67
  :'from' => :'String',
68
68
  :'subject' => :'String',
69
69
  :'inbox_id' => :'String',
70
- :'to' => :'Array<String>',
71
70
  :'attachments' => :'Array<String>',
71
+ :'to' => :'Array<String>',
72
72
  :'bcc' => :'Array<String>',
73
73
  :'cc' => :'Array<String>',
74
74
  :'created_at' => :'DateTime',
@@ -116,18 +116,18 @@ module MailSlurpClient
116
116
  self.inbox_id = attributes[:'inbox_id']
117
117
  end
118
118
 
119
- if attributes.key?(:'to')
120
- if (value = attributes[:'to']).is_a?(Array)
121
- self.to = value
122
- end
123
- end
124
-
125
119
  if attributes.key?(:'attachments')
126
120
  if (value = attributes[:'attachments']).is_a?(Array)
127
121
  self.attachments = value
128
122
  end
129
123
  end
130
124
 
125
+ if attributes.key?(:'to')
126
+ if (value = attributes[:'to']).is_a?(Array)
127
+ self.to = value
128
+ end
129
+ end
130
+
131
131
  if attributes.key?(:'bcc')
132
132
  if (value = attributes[:'bcc']).is_a?(Array)
133
133
  self.bcc = value
@@ -203,8 +203,8 @@ module MailSlurpClient
203
203
  from == o.from &&
204
204
  subject == o.subject &&
205
205
  inbox_id == o.inbox_id &&
206
- to == o.to &&
207
206
  attachments == o.attachments &&
207
+ to == o.to &&
208
208
  bcc == o.bcc &&
209
209
  cc == o.cc &&
210
210
  created_at == o.created_at &&
@@ -223,7 +223,7 @@ module MailSlurpClient
223
223
  # Calculates hash code according to all attributes.
224
224
  # @return [Integer] Hash code
225
225
  def hash
226
- [id, from, subject, inbox_id, to, attachments, bcc, cc, created_at, team_access, read, body_md5_hash, body_excerpt].hash
226
+ [id, from, subject, inbox_id, attachments, to, bcc, cc, created_at, team_access, read, body_md5_hash, body_excerpt].hash
227
227
  end
228
228
 
229
229
  # Builds the object from hash
@@ -0,0 +1,276 @@
1
+ =begin
2
+ #MailSlurp API
3
+
4
+ #MailSlurp is an API for sending and receiving emails from dynamically allocated email addresses. It's designed for developers and QA teams to test applications, process inbound emails, send templated notifications, attachments, and more. ## Resources - [Homepage](https://www.mailslurp.com) - Get an [API KEY](https://app.mailslurp.com/sign-up/) - Generated [SDK Clients](https://www.mailslurp.com/docs/) - [Examples](https://github.com/mailslurp/examples) repository
5
+
6
+ The version of the OpenAPI document: 6.5.2
7
+ Contact: contact@mailslurp.dev
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module MailSlurpClient
16
+ class EmailValidationRequest
17
+ attr_accessor :id
18
+
19
+ attr_accessor :user_id
20
+
21
+ attr_accessor :email_address
22
+
23
+ attr_accessor :is_valid
24
+
25
+ attr_accessor :created_at
26
+
27
+ attr_accessor :updated_at
28
+
29
+ # Attribute mapping from ruby-style variable name to JSON key.
30
+ def self.attribute_map
31
+ {
32
+ :'id' => :'id',
33
+ :'user_id' => :'userId',
34
+ :'email_address' => :'emailAddress',
35
+ :'is_valid' => :'isValid',
36
+ :'created_at' => :'createdAt',
37
+ :'updated_at' => :'updatedAt'
38
+ }
39
+ end
40
+
41
+ # Attribute type mapping.
42
+ def self.openapi_types
43
+ {
44
+ :'id' => :'String',
45
+ :'user_id' => :'String',
46
+ :'email_address' => :'String',
47
+ :'is_valid' => :'Boolean',
48
+ :'created_at' => :'DateTime',
49
+ :'updated_at' => :'DateTime'
50
+ }
51
+ end
52
+
53
+ # List of attributes with nullable: true
54
+ def self.openapi_nullable
55
+ Set.new([
56
+ ])
57
+ end
58
+
59
+ # Initializes the object
60
+ # @param [Hash] attributes Model attributes in the form of hash
61
+ def initialize(attributes = {})
62
+ if (!attributes.is_a?(Hash))
63
+ fail ArgumentError, "The input argument (attributes) must be a hash in `MailSlurpClient::EmailValidationRequest` initialize method"
64
+ end
65
+
66
+ # check to see if the attribute exists and convert string to symbol for hash key
67
+ attributes = attributes.each_with_object({}) { |(k, v), h|
68
+ if (!self.class.attribute_map.key?(k.to_sym))
69
+ fail ArgumentError, "`#{k}` is not a valid attribute in `MailSlurpClient::EmailValidationRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
70
+ end
71
+ h[k.to_sym] = v
72
+ }
73
+
74
+ if attributes.key?(:'id')
75
+ self.id = attributes[:'id']
76
+ end
77
+
78
+ if attributes.key?(:'user_id')
79
+ self.user_id = attributes[:'user_id']
80
+ end
81
+
82
+ if attributes.key?(:'email_address')
83
+ self.email_address = attributes[:'email_address']
84
+ end
85
+
86
+ if attributes.key?(:'is_valid')
87
+ self.is_valid = attributes[:'is_valid']
88
+ end
89
+
90
+ if attributes.key?(:'created_at')
91
+ self.created_at = attributes[:'created_at']
92
+ end
93
+
94
+ if attributes.key?(:'updated_at')
95
+ self.updated_at = attributes[:'updated_at']
96
+ end
97
+ end
98
+
99
+ # Show invalid properties with the reasons. Usually used together with valid?
100
+ # @return Array for valid properties with the reasons
101
+ def list_invalid_properties
102
+ invalid_properties = Array.new
103
+ if @user_id.nil?
104
+ invalid_properties.push('invalid value for "user_id", user_id cannot be nil.')
105
+ end
106
+
107
+ if @email_address.nil?
108
+ invalid_properties.push('invalid value for "email_address", email_address cannot be nil.')
109
+ end
110
+
111
+ if @is_valid.nil?
112
+ invalid_properties.push('invalid value for "is_valid", is_valid cannot be nil.')
113
+ end
114
+
115
+ if @created_at.nil?
116
+ invalid_properties.push('invalid value for "created_at", created_at cannot be nil.')
117
+ end
118
+
119
+ if @updated_at.nil?
120
+ invalid_properties.push('invalid value for "updated_at", updated_at cannot be nil.')
121
+ end
122
+
123
+ invalid_properties
124
+ end
125
+
126
+ # Check to see if the all the properties in the model are valid
127
+ # @return true if the model is valid
128
+ def valid?
129
+ return false if @user_id.nil?
130
+ return false if @email_address.nil?
131
+ return false if @is_valid.nil?
132
+ return false if @created_at.nil?
133
+ return false if @updated_at.nil?
134
+ true
135
+ end
136
+
137
+ # Checks equality by comparing each attribute.
138
+ # @param [Object] Object to be compared
139
+ def ==(o)
140
+ return true if self.equal?(o)
141
+ self.class == o.class &&
142
+ id == o.id &&
143
+ user_id == o.user_id &&
144
+ email_address == o.email_address &&
145
+ is_valid == o.is_valid &&
146
+ created_at == o.created_at &&
147
+ updated_at == o.updated_at
148
+ end
149
+
150
+ # @see the `==` method
151
+ # @param [Object] Object to be compared
152
+ def eql?(o)
153
+ self == o
154
+ end
155
+
156
+ # Calculates hash code according to all attributes.
157
+ # @return [Integer] Hash code
158
+ def hash
159
+ [id, user_id, email_address, is_valid, created_at, updated_at].hash
160
+ end
161
+
162
+ # Builds the object from hash
163
+ # @param [Hash] attributes Model attributes in the form of hash
164
+ # @return [Object] Returns the model itself
165
+ def self.build_from_hash(attributes)
166
+ new.build_from_hash(attributes)
167
+ end
168
+
169
+ # Builds the object from hash
170
+ # @param [Hash] attributes Model attributes in the form of hash
171
+ # @return [Object] Returns the model itself
172
+ def build_from_hash(attributes)
173
+ return nil unless attributes.is_a?(Hash)
174
+ self.class.openapi_types.each_pair do |key, type|
175
+ if type =~ /\AArray<(.*)>/i
176
+ # check to ensure the input is an array given that the attribute
177
+ # is documented as an array but the input is not
178
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
179
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
180
+ end
181
+ elsif !attributes[self.class.attribute_map[key]].nil?
182
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
183
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
184
+ end
185
+
186
+ self
187
+ end
188
+
189
+ # Deserializes the data based on type
190
+ # @param string type Data type
191
+ # @param string value Value to be deserialized
192
+ # @return [Object] Deserialized data
193
+ def _deserialize(type, value)
194
+ case type.to_sym
195
+ when :DateTime
196
+ DateTime.parse(value)
197
+ when :Date
198
+ Date.parse(value)
199
+ when :String
200
+ value.to_s
201
+ when :Integer
202
+ value.to_i
203
+ when :Float
204
+ value.to_f
205
+ when :Boolean
206
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
207
+ true
208
+ else
209
+ false
210
+ end
211
+ when :Object
212
+ # generic object (usually a Hash), return directly
213
+ value
214
+ when /\AArray<(?<inner_type>.+)>\z/
215
+ inner_type = Regexp.last_match[:inner_type]
216
+ value.map { |v| _deserialize(inner_type, v) }
217
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
218
+ k_type = Regexp.last_match[:k_type]
219
+ v_type = Regexp.last_match[:v_type]
220
+ {}.tap do |hash|
221
+ value.each do |k, v|
222
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
223
+ end
224
+ end
225
+ else # model
226
+ MailSlurpClient.const_get(type).build_from_hash(value)
227
+ end
228
+ end
229
+
230
+ # Returns the string representation of the object
231
+ # @return [String] String presentation of the object
232
+ def to_s
233
+ to_hash.to_s
234
+ end
235
+
236
+ # to_body is an alias to to_hash (backward compatibility)
237
+ # @return [Hash] Returns the object in the form of hash
238
+ def to_body
239
+ to_hash
240
+ end
241
+
242
+ # Returns the object in the form of hash
243
+ # @return [Hash] Returns the object in the form of hash
244
+ def to_hash
245
+ hash = {}
246
+ self.class.attribute_map.each_pair do |attr, param|
247
+ value = self.send(attr)
248
+ if value.nil?
249
+ is_nullable = self.class.openapi_nullable.include?(attr)
250
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
251
+ end
252
+
253
+ hash[param] = _to_hash(value)
254
+ end
255
+ hash
256
+ end
257
+
258
+ # Outputs non-array value in the form of hash
259
+ # For object, use to_hash. Otherwise, just return the value
260
+ # @param [Object] value Any valid value
261
+ # @return [Hash] Returns the value in the form of hash
262
+ def _to_hash(value)
263
+ if value.is_a?(Array)
264
+ value.compact.map { |v| _to_hash(v) }
265
+ elsif value.is_a?(Hash)
266
+ {}.tap do |hash|
267
+ value.each { |k, v| hash[k] = _to_hash(v) }
268
+ end
269
+ elsif value.respond_to? :to_hash
270
+ value.to_hash
271
+ else
272
+ value
273
+ end
274
+ end
275
+ end
276
+ end
@@ -0,0 +1,213 @@
1
+ =begin
2
+ #MailSlurp API
3
+
4
+ #MailSlurp is an API for sending and receiving emails from dynamically allocated email addresses. It's designed for developers and QA teams to test applications, process inbound emails, send templated notifications, attachments, and more. ## Resources - [Homepage](https://www.mailslurp.com) - Get an [API KEY](https://app.mailslurp.com/sign-up/) - Generated [SDK Clients](https://www.mailslurp.com/docs/) - [Examples](https://github.com/mailslurp/examples) repository
5
+
6
+ The version of the OpenAPI document: 6.5.2
7
+ Contact: contact@mailslurp.dev
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.3.1
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module MailSlurpClient
16
+ class FilterBouncedRecipientsOptions
17
+ attr_accessor :email_recipients
18
+
19
+ # Attribute mapping from ruby-style variable name to JSON key.
20
+ def self.attribute_map
21
+ {
22
+ :'email_recipients' => :'emailRecipients'
23
+ }
24
+ end
25
+
26
+ # Attribute type mapping.
27
+ def self.openapi_types
28
+ {
29
+ :'email_recipients' => :'Array<String>'
30
+ }
31
+ end
32
+
33
+ # List of attributes with nullable: true
34
+ def self.openapi_nullable
35
+ Set.new([
36
+ ])
37
+ end
38
+
39
+ # Initializes the object
40
+ # @param [Hash] attributes Model attributes in the form of hash
41
+ def initialize(attributes = {})
42
+ if (!attributes.is_a?(Hash))
43
+ fail ArgumentError, "The input argument (attributes) must be a hash in `MailSlurpClient::FilterBouncedRecipientsOptions` initialize method"
44
+ end
45
+
46
+ # check to see if the attribute exists and convert string to symbol for hash key
47
+ attributes = attributes.each_with_object({}) { |(k, v), h|
48
+ if (!self.class.attribute_map.key?(k.to_sym))
49
+ fail ArgumentError, "`#{k}` is not a valid attribute in `MailSlurpClient::FilterBouncedRecipientsOptions`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
50
+ end
51
+ h[k.to_sym] = v
52
+ }
53
+
54
+ if attributes.key?(:'email_recipients')
55
+ if (value = attributes[:'email_recipients']).is_a?(Array)
56
+ self.email_recipients = value
57
+ end
58
+ end
59
+ end
60
+
61
+ # Show invalid properties with the reasons. Usually used together with valid?
62
+ # @return Array for valid properties with the reasons
63
+ def list_invalid_properties
64
+ invalid_properties = Array.new
65
+ if @email_recipients.nil?
66
+ invalid_properties.push('invalid value for "email_recipients", email_recipients cannot be nil.')
67
+ end
68
+
69
+ invalid_properties
70
+ end
71
+
72
+ # Check to see if the all the properties in the model are valid
73
+ # @return true if the model is valid
74
+ def valid?
75
+ return false if @email_recipients.nil?
76
+ true
77
+ end
78
+
79
+ # Checks equality by comparing each attribute.
80
+ # @param [Object] Object to be compared
81
+ def ==(o)
82
+ return true if self.equal?(o)
83
+ self.class == o.class &&
84
+ email_recipients == o.email_recipients
85
+ end
86
+
87
+ # @see the `==` method
88
+ # @param [Object] Object to be compared
89
+ def eql?(o)
90
+ self == o
91
+ end
92
+
93
+ # Calculates hash code according to all attributes.
94
+ # @return [Integer] Hash code
95
+ def hash
96
+ [email_recipients].hash
97
+ end
98
+
99
+ # Builds the object from hash
100
+ # @param [Hash] attributes Model attributes in the form of hash
101
+ # @return [Object] Returns the model itself
102
+ def self.build_from_hash(attributes)
103
+ new.build_from_hash(attributes)
104
+ end
105
+
106
+ # Builds the object from hash
107
+ # @param [Hash] attributes Model attributes in the form of hash
108
+ # @return [Object] Returns the model itself
109
+ def build_from_hash(attributes)
110
+ return nil unless attributes.is_a?(Hash)
111
+ self.class.openapi_types.each_pair do |key, type|
112
+ if type =~ /\AArray<(.*)>/i
113
+ # check to ensure the input is an array given that the attribute
114
+ # is documented as an array but the input is not
115
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
116
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
117
+ end
118
+ elsif !attributes[self.class.attribute_map[key]].nil?
119
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
120
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
121
+ end
122
+
123
+ self
124
+ end
125
+
126
+ # Deserializes the data based on type
127
+ # @param string type Data type
128
+ # @param string value Value to be deserialized
129
+ # @return [Object] Deserialized data
130
+ def _deserialize(type, value)
131
+ case type.to_sym
132
+ when :DateTime
133
+ DateTime.parse(value)
134
+ when :Date
135
+ Date.parse(value)
136
+ when :String
137
+ value.to_s
138
+ when :Integer
139
+ value.to_i
140
+ when :Float
141
+ value.to_f
142
+ when :Boolean
143
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
144
+ true
145
+ else
146
+ false
147
+ end
148
+ when :Object
149
+ # generic object (usually a Hash), return directly
150
+ value
151
+ when /\AArray<(?<inner_type>.+)>\z/
152
+ inner_type = Regexp.last_match[:inner_type]
153
+ value.map { |v| _deserialize(inner_type, v) }
154
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
155
+ k_type = Regexp.last_match[:k_type]
156
+ v_type = Regexp.last_match[:v_type]
157
+ {}.tap do |hash|
158
+ value.each do |k, v|
159
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
160
+ end
161
+ end
162
+ else # model
163
+ MailSlurpClient.const_get(type).build_from_hash(value)
164
+ end
165
+ end
166
+
167
+ # Returns the string representation of the object
168
+ # @return [String] String presentation of the object
169
+ def to_s
170
+ to_hash.to_s
171
+ end
172
+
173
+ # to_body is an alias to to_hash (backward compatibility)
174
+ # @return [Hash] Returns the object in the form of hash
175
+ def to_body
176
+ to_hash
177
+ end
178
+
179
+ # Returns the object in the form of hash
180
+ # @return [Hash] Returns the object in the form of hash
181
+ def to_hash
182
+ hash = {}
183
+ self.class.attribute_map.each_pair do |attr, param|
184
+ value = self.send(attr)
185
+ if value.nil?
186
+ is_nullable = self.class.openapi_nullable.include?(attr)
187
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
188
+ end
189
+
190
+ hash[param] = _to_hash(value)
191
+ end
192
+ hash
193
+ end
194
+
195
+ # Outputs non-array value in the form of hash
196
+ # For object, use to_hash. Otherwise, just return the value
197
+ # @param [Object] value Any valid value
198
+ # @return [Hash] Returns the value in the form of hash
199
+ def _to_hash(value)
200
+ if value.is_a?(Array)
201
+ value.compact.map { |v| _to_hash(v) }
202
+ elsif value.is_a?(Hash)
203
+ {}.tap do |hash|
204
+ value.each { |k, v| hash[k] = _to_hash(v) }
205
+ end
206
+ elsif value.respond_to? :to_hash
207
+ value.to_hash
208
+ else
209
+ value
210
+ end
211
+ end
212
+ end
213
+ end