beanie 0.1.4 → 0.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 (74) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +4 -0
  3. data/README.md +79 -16
  4. data/Rakefile +8 -1
  5. data/beanie.gemspec +44 -25
  6. data/docs/BankAccount.md +24 -0
  7. data/docs/BankAccountApi.md +154 -0
  8. data/docs/BankAccountInput.md +24 -0
  9. data/docs/ErrorModel.md +9 -0
  10. data/git_push.sh +55 -0
  11. data/lib/beanie/api/bank_account_api.rb +183 -0
  12. data/lib/beanie/api_client.rb +388 -0
  13. data/lib/beanie/api_error.rb +38 -0
  14. data/lib/beanie/configuration.rb +202 -0
  15. data/lib/beanie/models/bank_account.rb +358 -0
  16. data/lib/beanie/models/bank_account_input.rb +357 -0
  17. data/lib/beanie/models/error_model.rb +202 -0
  18. data/lib/beanie/version.rb +13 -30
  19. data/lib/beanie.rb +32 -115
  20. data/spec/api/bank_account_api_spec.rb +71 -0
  21. data/spec/api_client_spec.rb +226 -0
  22. data/spec/configuration_spec.rb +42 -0
  23. data/spec/models/bank_account_input_spec.rb +137 -0
  24. data/spec/models/bank_account_spec.rb +137 -0
  25. data/spec/models/error_model_spec.rb +47 -0
  26. data/spec/spec_helper.rb +111 -0
  27. metadata +174 -71
  28. data/.gitignore +0 -17
  29. data/VERSION +0 -1
  30. data/lib/beanie/api.rb +0 -182
  31. data/lib/beanie/bank_account.rb +0 -44
  32. data/lib/beanie/bank_statement.rb +0 -45
  33. data/lib/beanie/bank_statement_data.rb +0 -51
  34. data/lib/beanie/beanie_alert.rb +0 -66
  35. data/lib/beanie/bill_of_material.rb +0 -44
  36. data/lib/beanie/billable.rb +0 -46
  37. data/lib/beanie/bom_item.rb +0 -44
  38. data/lib/beanie/company.rb +0 -66
  39. data/lib/beanie/company_member.rb +0 -43
  40. data/lib/beanie/config_type.rb +0 -62
  41. data/lib/beanie/config_value.rb +0 -42
  42. data/lib/beanie/customer.rb +0 -51
  43. data/lib/beanie/customer_address.rb +0 -63
  44. data/lib/beanie/customer_note.rb +0 -42
  45. data/lib/beanie/document.rb +0 -71
  46. data/lib/beanie/fixed_asset.rb +0 -45
  47. data/lib/beanie/journal.rb +0 -44
  48. data/lib/beanie/journal_item.rb +0 -44
  49. data/lib/beanie/nominal_account.rb +0 -73
  50. data/lib/beanie/nominal_account_category.rb +0 -49
  51. data/lib/beanie/product.rb +0 -52
  52. data/lib/beanie/product_category.rb +0 -43
  53. data/lib/beanie/product_price.rb +0 -44
  54. data/lib/beanie/production_order.rb +0 -76
  55. data/lib/beanie/purchase_invoice.rb +0 -55
  56. data/lib/beanie/purchase_order.rb +0 -46
  57. data/lib/beanie/purchase_order_item.rb +0 -60
  58. data/lib/beanie/sales_invoice.rb +0 -83
  59. data/lib/beanie/sales_invoice_item.rb +0 -50
  60. data/lib/beanie/sales_order.rb +0 -74
  61. data/lib/beanie/sales_order_item.rb +0 -126
  62. data/lib/beanie/stock_adjustment.rb +0 -70
  63. data/lib/beanie/stock_category.rb +0 -44
  64. data/lib/beanie/stock_item.rb +0 -58
  65. data/lib/beanie/stock_location.rb +0 -42
  66. data/lib/beanie/stock_supplier.rb +0 -48
  67. data/lib/beanie/supplier.rb +0 -48
  68. data/lib/beanie/supplier_address.rb +0 -53
  69. data/lib/beanie/supplier_note.rb +0 -42
  70. data/lib/beanie/tax_registration.rb +0 -59
  71. data/lib/beanie/vat_record.rb +0 -66
  72. data/lib/beanie/vat_return.rb +0 -60
  73. data/lib/beanie/work_centre.rb +0 -99
  74. data/lib/beanie/work_centre_group.rb +0 -50
@@ -0,0 +1,358 @@
1
+ =begin
2
+ #Beanie ERP API
3
+
4
+ #An API specification for interacting with the Beanie ERP system
5
+
6
+ OpenAPI spec version: 0.1
7
+ Contact: dev@bean.ie
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module Beanie
16
+ # Bank account information
17
+ class BankAccount
18
+ attr_accessor :id
19
+
20
+ attr_accessor :name
21
+
22
+ attr_accessor :bank_name
23
+
24
+ attr_accessor :currency
25
+
26
+ attr_accessor :swift
27
+
28
+ attr_accessor :iban
29
+
30
+ attr_accessor :address1
31
+
32
+ attr_accessor :address2
33
+
34
+ attr_accessor :address3
35
+
36
+ attr_accessor :city
37
+
38
+ attr_accessor :state_county
39
+
40
+ attr_accessor :zip_postcode
41
+
42
+ attr_accessor :country
43
+
44
+ attr_accessor :contact_name
45
+
46
+ attr_accessor :phone
47
+
48
+ attr_accessor :email
49
+
50
+ attr_accessor :website
51
+
52
+ # Attribute mapping from ruby-style variable name to JSON key.
53
+ def self.attribute_map
54
+ {
55
+ :'id' => :'id',
56
+ :'name' => :'name',
57
+ :'bank_name' => :'bank_name',
58
+ :'currency' => :'currency',
59
+ :'swift' => :'swift',
60
+ :'iban' => :'iban',
61
+ :'address1' => :'address1',
62
+ :'address2' => :'address2',
63
+ :'address3' => :'address3',
64
+ :'city' => :'city',
65
+ :'state_county' => :'state_county',
66
+ :'zip_postcode' => :'zip_postcode',
67
+ :'country' => :'country',
68
+ :'contact_name' => :'contact_name',
69
+ :'phone' => :'phone',
70
+ :'email' => :'email',
71
+ :'website' => :'website'
72
+ }
73
+ end
74
+
75
+ # Attribute type mapping.
76
+ def self.swagger_types
77
+ {
78
+ :'id' => :'Integer',
79
+ :'name' => :'String',
80
+ :'bank_name' => :'String',
81
+ :'currency' => :'String',
82
+ :'swift' => :'String',
83
+ :'iban' => :'String',
84
+ :'address1' => :'String',
85
+ :'address2' => :'String',
86
+ :'address3' => :'String',
87
+ :'city' => :'String',
88
+ :'state_county' => :'String',
89
+ :'zip_postcode' => :'String',
90
+ :'country' => :'String',
91
+ :'contact_name' => :'String',
92
+ :'phone' => :'String',
93
+ :'email' => :'String',
94
+ :'website' => :'String'
95
+ }
96
+ end
97
+
98
+ # Initializes the object
99
+ # @param [Hash] attributes Model attributes in the form of hash
100
+ def initialize(attributes = {})
101
+ return unless attributes.is_a?(Hash)
102
+
103
+ # convert string to symbol for hash key
104
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
105
+
106
+ if attributes.has_key?(:'id')
107
+ self.id = attributes[:'id']
108
+ end
109
+
110
+ if attributes.has_key?(:'name')
111
+ self.name = attributes[:'name']
112
+ end
113
+
114
+ if attributes.has_key?(:'bank_name')
115
+ self.bank_name = attributes[:'bank_name']
116
+ end
117
+
118
+ if attributes.has_key?(:'currency')
119
+ self.currency = attributes[:'currency']
120
+ end
121
+
122
+ if attributes.has_key?(:'swift')
123
+ self.swift = attributes[:'swift']
124
+ end
125
+
126
+ if attributes.has_key?(:'iban')
127
+ self.iban = attributes[:'iban']
128
+ end
129
+
130
+ if attributes.has_key?(:'address1')
131
+ self.address1 = attributes[:'address1']
132
+ end
133
+
134
+ if attributes.has_key?(:'address2')
135
+ self.address2 = attributes[:'address2']
136
+ end
137
+
138
+ if attributes.has_key?(:'address3')
139
+ self.address3 = attributes[:'address3']
140
+ end
141
+
142
+ if attributes.has_key?(:'city')
143
+ self.city = attributes[:'city']
144
+ end
145
+
146
+ if attributes.has_key?(:'state_county')
147
+ self.state_county = attributes[:'state_county']
148
+ end
149
+
150
+ if attributes.has_key?(:'zip_postcode')
151
+ self.zip_postcode = attributes[:'zip_postcode']
152
+ end
153
+
154
+ if attributes.has_key?(:'country')
155
+ self.country = attributes[:'country']
156
+ end
157
+
158
+ if attributes.has_key?(:'contact_name')
159
+ self.contact_name = attributes[:'contact_name']
160
+ end
161
+
162
+ if attributes.has_key?(:'phone')
163
+ self.phone = attributes[:'phone']
164
+ end
165
+
166
+ if attributes.has_key?(:'email')
167
+ self.email = attributes[:'email']
168
+ end
169
+
170
+ if attributes.has_key?(:'website')
171
+ self.website = attributes[:'website']
172
+ end
173
+ end
174
+
175
+ # Show invalid properties with the reasons. Usually used together with valid?
176
+ # @return Array for valid properties with the reasons
177
+ def list_invalid_properties
178
+ invalid_properties = Array.new
179
+ if @id.nil?
180
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
181
+ end
182
+
183
+ if @name.nil?
184
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
185
+ end
186
+
187
+ if @bank_name.nil?
188
+ invalid_properties.push('invalid value for "bank_name", bank_name cannot be nil.')
189
+ end
190
+
191
+ if @currency.nil?
192
+ invalid_properties.push('invalid value for "currency", currency cannot be nil.')
193
+ end
194
+
195
+ if @swift.nil?
196
+ invalid_properties.push('invalid value for "swift", swift cannot be nil.')
197
+ end
198
+
199
+ if @iban.nil?
200
+ invalid_properties.push('invalid value for "iban", iban cannot be nil.')
201
+ end
202
+
203
+ invalid_properties
204
+ end
205
+
206
+ # Check to see if the all the properties in the model are valid
207
+ # @return true if the model is valid
208
+ def valid?
209
+ return false if @id.nil?
210
+ return false if @name.nil?
211
+ return false if @bank_name.nil?
212
+ return false if @currency.nil?
213
+ return false if @swift.nil?
214
+ return false if @iban.nil?
215
+ true
216
+ end
217
+
218
+ # Checks equality by comparing each attribute.
219
+ # @param [Object] Object to be compared
220
+ def ==(o)
221
+ return true if self.equal?(o)
222
+ self.class == o.class &&
223
+ id == o.id &&
224
+ name == o.name &&
225
+ bank_name == o.bank_name &&
226
+ currency == o.currency &&
227
+ swift == o.swift &&
228
+ iban == o.iban &&
229
+ address1 == o.address1 &&
230
+ address2 == o.address2 &&
231
+ address3 == o.address3 &&
232
+ city == o.city &&
233
+ state_county == o.state_county &&
234
+ zip_postcode == o.zip_postcode &&
235
+ country == o.country &&
236
+ contact_name == o.contact_name &&
237
+ phone == o.phone &&
238
+ email == o.email &&
239
+ website == o.website
240
+ end
241
+
242
+ # @see the `==` method
243
+ # @param [Object] Object to be compared
244
+ def eql?(o)
245
+ self == o
246
+ end
247
+
248
+ # Calculates hash code according to all attributes.
249
+ # @return [Fixnum] Hash code
250
+ def hash
251
+ [id, name, bank_name, currency, swift, iban, address1, address2, address3, city, state_county, zip_postcode, country, contact_name, phone, email, website].hash
252
+ end
253
+
254
+ # Builds the object from hash
255
+ # @param [Hash] attributes Model attributes in the form of hash
256
+ # @return [Object] Returns the model itself
257
+ def build_from_hash(attributes)
258
+ return nil unless attributes.is_a?(Hash)
259
+ self.class.swagger_types.each_pair do |key, type|
260
+ if type =~ /\AArray<(.*)>/i
261
+ # check to ensure the input is an array given that the the attribute
262
+ # is documented as an array but the input is not
263
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
264
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
265
+ end
266
+ elsif !attributes[self.class.attribute_map[key]].nil?
267
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
268
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
269
+ end
270
+
271
+ self
272
+ end
273
+
274
+ # Deserializes the data based on type
275
+ # @param string type Data type
276
+ # @param string value Value to be deserialized
277
+ # @return [Object] Deserialized data
278
+ def _deserialize(type, value)
279
+ case type.to_sym
280
+ when :DateTime
281
+ DateTime.parse(value)
282
+ when :Date
283
+ Date.parse(value)
284
+ when :String
285
+ value.to_s
286
+ when :Integer
287
+ value.to_i
288
+ when :Float
289
+ value.to_f
290
+ when :BOOLEAN
291
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
292
+ true
293
+ else
294
+ false
295
+ end
296
+ when :Object
297
+ # generic object (usually a Hash), return directly
298
+ value
299
+ when /\AArray<(?<inner_type>.+)>\z/
300
+ inner_type = Regexp.last_match[:inner_type]
301
+ value.map { |v| _deserialize(inner_type, v) }
302
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
303
+ k_type = Regexp.last_match[:k_type]
304
+ v_type = Regexp.last_match[:v_type]
305
+ {}.tap do |hash|
306
+ value.each do |k, v|
307
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
308
+ end
309
+ end
310
+ else # model
311
+ temp_model = Beanie.const_get(type).new
312
+ temp_model.build_from_hash(value)
313
+ end
314
+ end
315
+
316
+ # Returns the string representation of the object
317
+ # @return [String] String presentation of the object
318
+ def to_s
319
+ to_hash.to_s
320
+ end
321
+
322
+ # to_body is an alias to to_hash (backward compatibility)
323
+ # @return [Hash] Returns the object in the form of hash
324
+ def to_body
325
+ to_hash
326
+ end
327
+
328
+ # Returns the object in the form of hash
329
+ # @return [Hash] Returns the object in the form of hash
330
+ def to_hash
331
+ hash = {}
332
+ self.class.attribute_map.each_pair do |attr, param|
333
+ value = self.send(attr)
334
+ next if value.nil?
335
+ hash[param] = _to_hash(value)
336
+ end
337
+ hash
338
+ end
339
+
340
+ # Outputs non-array value in the form of hash
341
+ # For object, use to_hash. Otherwise, just return the value
342
+ # @param [Object] value Any valid value
343
+ # @return [Hash] Returns the value in the form of hash
344
+ def _to_hash(value)
345
+ if value.is_a?(Array)
346
+ value.compact.map { |v| _to_hash(v) }
347
+ elsif value.is_a?(Hash)
348
+ {}.tap do |hash|
349
+ value.each { |k, v| hash[k] = _to_hash(v) }
350
+ end
351
+ elsif value.respond_to? :to_hash
352
+ value.to_hash
353
+ else
354
+ value
355
+ end
356
+ end
357
+ end
358
+ end
@@ -0,0 +1,357 @@
1
+ =begin
2
+ #Beanie ERP API
3
+
4
+ #An API specification for interacting with the Beanie ERP system
5
+
6
+ OpenAPI spec version: 0.1
7
+ Contact: dev@bean.ie
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module Beanie
16
+ class BankAccountInput
17
+ attr_accessor :id
18
+
19
+ attr_accessor :name
20
+
21
+ attr_accessor :bank_name
22
+
23
+ attr_accessor :currency
24
+
25
+ attr_accessor :swift
26
+
27
+ attr_accessor :iban
28
+
29
+ attr_accessor :address1
30
+
31
+ attr_accessor :address2
32
+
33
+ attr_accessor :address3
34
+
35
+ attr_accessor :city
36
+
37
+ attr_accessor :state_county
38
+
39
+ attr_accessor :zip_postcode
40
+
41
+ attr_accessor :country
42
+
43
+ attr_accessor :contact_name
44
+
45
+ attr_accessor :phone
46
+
47
+ attr_accessor :email
48
+
49
+ attr_accessor :website
50
+
51
+ # Attribute mapping from ruby-style variable name to JSON key.
52
+ def self.attribute_map
53
+ {
54
+ :'id' => :'id',
55
+ :'name' => :'name',
56
+ :'bank_name' => :'bank_name',
57
+ :'currency' => :'currency',
58
+ :'swift' => :'swift',
59
+ :'iban' => :'iban',
60
+ :'address1' => :'address1',
61
+ :'address2' => :'address2',
62
+ :'address3' => :'address3',
63
+ :'city' => :'city',
64
+ :'state_county' => :'state_county',
65
+ :'zip_postcode' => :'zip_postcode',
66
+ :'country' => :'country',
67
+ :'contact_name' => :'contact_name',
68
+ :'phone' => :'phone',
69
+ :'email' => :'email',
70
+ :'website' => :'website'
71
+ }
72
+ end
73
+
74
+ # Attribute type mapping.
75
+ def self.swagger_types
76
+ {
77
+ :'id' => :'Integer',
78
+ :'name' => :'String',
79
+ :'bank_name' => :'String',
80
+ :'currency' => :'String',
81
+ :'swift' => :'String',
82
+ :'iban' => :'String',
83
+ :'address1' => :'String',
84
+ :'address2' => :'String',
85
+ :'address3' => :'String',
86
+ :'city' => :'String',
87
+ :'state_county' => :'String',
88
+ :'zip_postcode' => :'String',
89
+ :'country' => :'String',
90
+ :'contact_name' => :'String',
91
+ :'phone' => :'String',
92
+ :'email' => :'String',
93
+ :'website' => :'String'
94
+ }
95
+ end
96
+
97
+ # Initializes the object
98
+ # @param [Hash] attributes Model attributes in the form of hash
99
+ def initialize(attributes = {})
100
+ return unless attributes.is_a?(Hash)
101
+
102
+ # convert string to symbol for hash key
103
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
104
+
105
+ if attributes.has_key?(:'id')
106
+ self.id = attributes[:'id']
107
+ end
108
+
109
+ if attributes.has_key?(:'name')
110
+ self.name = attributes[:'name']
111
+ end
112
+
113
+ if attributes.has_key?(:'bank_name')
114
+ self.bank_name = attributes[:'bank_name']
115
+ end
116
+
117
+ if attributes.has_key?(:'currency')
118
+ self.currency = attributes[:'currency']
119
+ end
120
+
121
+ if attributes.has_key?(:'swift')
122
+ self.swift = attributes[:'swift']
123
+ end
124
+
125
+ if attributes.has_key?(:'iban')
126
+ self.iban = attributes[:'iban']
127
+ end
128
+
129
+ if attributes.has_key?(:'address1')
130
+ self.address1 = attributes[:'address1']
131
+ end
132
+
133
+ if attributes.has_key?(:'address2')
134
+ self.address2 = attributes[:'address2']
135
+ end
136
+
137
+ if attributes.has_key?(:'address3')
138
+ self.address3 = attributes[:'address3']
139
+ end
140
+
141
+ if attributes.has_key?(:'city')
142
+ self.city = attributes[:'city']
143
+ end
144
+
145
+ if attributes.has_key?(:'state_county')
146
+ self.state_county = attributes[:'state_county']
147
+ end
148
+
149
+ if attributes.has_key?(:'zip_postcode')
150
+ self.zip_postcode = attributes[:'zip_postcode']
151
+ end
152
+
153
+ if attributes.has_key?(:'country')
154
+ self.country = attributes[:'country']
155
+ end
156
+
157
+ if attributes.has_key?(:'contact_name')
158
+ self.contact_name = attributes[:'contact_name']
159
+ end
160
+
161
+ if attributes.has_key?(:'phone')
162
+ self.phone = attributes[:'phone']
163
+ end
164
+
165
+ if attributes.has_key?(:'email')
166
+ self.email = attributes[:'email']
167
+ end
168
+
169
+ if attributes.has_key?(:'website')
170
+ self.website = attributes[:'website']
171
+ end
172
+ end
173
+
174
+ # Show invalid properties with the reasons. Usually used together with valid?
175
+ # @return Array for valid properties with the reasons
176
+ def list_invalid_properties
177
+ invalid_properties = Array.new
178
+ if @id.nil?
179
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
180
+ end
181
+
182
+ if @name.nil?
183
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
184
+ end
185
+
186
+ if @bank_name.nil?
187
+ invalid_properties.push('invalid value for "bank_name", bank_name cannot be nil.')
188
+ end
189
+
190
+ if @currency.nil?
191
+ invalid_properties.push('invalid value for "currency", currency cannot be nil.')
192
+ end
193
+
194
+ if @swift.nil?
195
+ invalid_properties.push('invalid value for "swift", swift cannot be nil.')
196
+ end
197
+
198
+ if @iban.nil?
199
+ invalid_properties.push('invalid value for "iban", iban cannot be nil.')
200
+ end
201
+
202
+ invalid_properties
203
+ end
204
+
205
+ # Check to see if the all the properties in the model are valid
206
+ # @return true if the model is valid
207
+ def valid?
208
+ return false if @id.nil?
209
+ return false if @name.nil?
210
+ return false if @bank_name.nil?
211
+ return false if @currency.nil?
212
+ return false if @swift.nil?
213
+ return false if @iban.nil?
214
+ true
215
+ end
216
+
217
+ # Checks equality by comparing each attribute.
218
+ # @param [Object] Object to be compared
219
+ def ==(o)
220
+ return true if self.equal?(o)
221
+ self.class == o.class &&
222
+ id == o.id &&
223
+ name == o.name &&
224
+ bank_name == o.bank_name &&
225
+ currency == o.currency &&
226
+ swift == o.swift &&
227
+ iban == o.iban &&
228
+ address1 == o.address1 &&
229
+ address2 == o.address2 &&
230
+ address3 == o.address3 &&
231
+ city == o.city &&
232
+ state_county == o.state_county &&
233
+ zip_postcode == o.zip_postcode &&
234
+ country == o.country &&
235
+ contact_name == o.contact_name &&
236
+ phone == o.phone &&
237
+ email == o.email &&
238
+ website == o.website
239
+ end
240
+
241
+ # @see the `==` method
242
+ # @param [Object] Object to be compared
243
+ def eql?(o)
244
+ self == o
245
+ end
246
+
247
+ # Calculates hash code according to all attributes.
248
+ # @return [Fixnum] Hash code
249
+ def hash
250
+ [id, name, bank_name, currency, swift, iban, address1, address2, address3, city, state_county, zip_postcode, country, contact_name, phone, email, website].hash
251
+ end
252
+
253
+ # Builds the object from hash
254
+ # @param [Hash] attributes Model attributes in the form of hash
255
+ # @return [Object] Returns the model itself
256
+ def build_from_hash(attributes)
257
+ return nil unless attributes.is_a?(Hash)
258
+ self.class.swagger_types.each_pair do |key, type|
259
+ if type =~ /\AArray<(.*)>/i
260
+ # check to ensure the input is an array given that the the attribute
261
+ # is documented as an array but the input is not
262
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
263
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
264
+ end
265
+ elsif !attributes[self.class.attribute_map[key]].nil?
266
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
267
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
268
+ end
269
+
270
+ self
271
+ end
272
+
273
+ # Deserializes the data based on type
274
+ # @param string type Data type
275
+ # @param string value Value to be deserialized
276
+ # @return [Object] Deserialized data
277
+ def _deserialize(type, value)
278
+ case type.to_sym
279
+ when :DateTime
280
+ DateTime.parse(value)
281
+ when :Date
282
+ Date.parse(value)
283
+ when :String
284
+ value.to_s
285
+ when :Integer
286
+ value.to_i
287
+ when :Float
288
+ value.to_f
289
+ when :BOOLEAN
290
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
291
+ true
292
+ else
293
+ false
294
+ end
295
+ when :Object
296
+ # generic object (usually a Hash), return directly
297
+ value
298
+ when /\AArray<(?<inner_type>.+)>\z/
299
+ inner_type = Regexp.last_match[:inner_type]
300
+ value.map { |v| _deserialize(inner_type, v) }
301
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
302
+ k_type = Regexp.last_match[:k_type]
303
+ v_type = Regexp.last_match[:v_type]
304
+ {}.tap do |hash|
305
+ value.each do |k, v|
306
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
307
+ end
308
+ end
309
+ else # model
310
+ temp_model = Beanie.const_get(type).new
311
+ temp_model.build_from_hash(value)
312
+ end
313
+ end
314
+
315
+ # Returns the string representation of the object
316
+ # @return [String] String presentation of the object
317
+ def to_s
318
+ to_hash.to_s
319
+ end
320
+
321
+ # to_body is an alias to to_hash (backward compatibility)
322
+ # @return [Hash] Returns the object in the form of hash
323
+ def to_body
324
+ to_hash
325
+ end
326
+
327
+ # Returns the object in the form of hash
328
+ # @return [Hash] Returns the object in the form of hash
329
+ def to_hash
330
+ hash = {}
331
+ self.class.attribute_map.each_pair do |attr, param|
332
+ value = self.send(attr)
333
+ next if value.nil?
334
+ hash[param] = _to_hash(value)
335
+ end
336
+ hash
337
+ end
338
+
339
+ # Outputs non-array value in the form of hash
340
+ # For object, use to_hash. Otherwise, just return the value
341
+ # @param [Object] value Any valid value
342
+ # @return [Hash] Returns the value in the form of hash
343
+ def _to_hash(value)
344
+ if value.is_a?(Array)
345
+ value.compact.map { |v| _to_hash(v) }
346
+ elsif value.is_a?(Hash)
347
+ {}.tap do |hash|
348
+ value.each { |k, v| hash[k] = _to_hash(v) }
349
+ end
350
+ elsif value.respond_to? :to_hash
351
+ value.to_hash
352
+ else
353
+ value
354
+ end
355
+ end
356
+ end
357
+ end