omnichannel 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +8 -0
  3. data/Gemfile.lock +79 -0
  4. data/README.md +120 -0
  5. data/Rakefile +10 -0
  6. data/config.json +12 -0
  7. data/docs/Channel.md +7 -0
  8. data/docs/DeliveryReportApi.md +58 -0
  9. data/docs/DeliveryReportResponse.md +10 -0
  10. data/docs/DeliveryResult.md +13 -0
  11. data/docs/Err.md +7 -0
  12. data/docs/ErrorItem.md +11 -0
  13. data/docs/ErrorResponse.md +8 -0
  14. data/docs/Message.md +9 -0
  15. data/docs/MessageResult.md +10 -0
  16. data/docs/OmniMessageCreateSuccessResponse.md +10 -0
  17. data/docs/Omnimessage.md +11 -0
  18. data/docs/OmnimessageApi.md +107 -0
  19. data/docs/ResponseErrorCode.md +7 -0
  20. data/docs/ResponseErrorTitle.md +7 -0
  21. data/docs/SMS.md +13 -0
  22. data/docs/Status.md +7 -0
  23. data/docs/Viber.md +14 -0
  24. data/docs/WhatsApp.md +14 -0
  25. data/docs/WhatsAppAudio.md +8 -0
  26. data/docs/WhatsAppDocument.md +9 -0
  27. data/docs/WhatsAppImage.md +9 -0
  28. data/docs/WhatsAppText.md +9 -0
  29. data/git_push.sh +55 -0
  30. data/lib/omnichannel.rb +60 -0
  31. data/lib/omnichannel/api/delivery_report_api.rb +74 -0
  32. data/lib/omnichannel/api/omnimessage_api.rb +126 -0
  33. data/lib/omnichannel/api_client.rb +387 -0
  34. data/lib/omnichannel/api_error.rb +38 -0
  35. data/lib/omnichannel/configuration.rb +251 -0
  36. data/lib/omnichannel/models/channel.rb +39 -0
  37. data/lib/omnichannel/models/delivery_report_response.rb +229 -0
  38. data/lib/omnichannel/models/delivery_result.rb +239 -0
  39. data/lib/omnichannel/models/err.rb +48 -0
  40. data/lib/omnichannel/models/error_item.rb +240 -0
  41. data/lib/omnichannel/models/error_response.rb +198 -0
  42. data/lib/omnichannel/models/message.rb +207 -0
  43. data/lib/omnichannel/models/message_result.rb +226 -0
  44. data/lib/omnichannel/models/omni_message_create_success_response.rb +229 -0
  45. data/lib/omnichannel/models/omnimessage.rb +233 -0
  46. data/lib/omnichannel/models/response_error_code.rb +43 -0
  47. data/lib/omnichannel/models/response_error_title.rb +42 -0
  48. data/lib/omnichannel/models/sms.rb +249 -0
  49. data/lib/omnichannel/models/status.rb +47 -0
  50. data/lib/omnichannel/models/viber.rb +254 -0
  51. data/lib/omnichannel/models/whats_app.rb +250 -0
  52. data/lib/omnichannel/models/whats_app_audio.rb +197 -0
  53. data/lib/omnichannel/models/whats_app_document.rb +207 -0
  54. data/lib/omnichannel/models/whats_app_image.rb +207 -0
  55. data/lib/omnichannel/models/whats_app_text.rb +209 -0
  56. data/lib/omnichannel/version.rb +15 -0
  57. data/lib/openapi_client.rb +61 -0
  58. data/lib/openapi_client/api/delivery_report_api.rb +74 -0
  59. data/lib/openapi_client/api/omnimessage_api.rb +126 -0
  60. data/lib/openapi_client/api_client.rb +387 -0
  61. data/lib/openapi_client/api_error.rb +38 -0
  62. data/lib/openapi_client/configuration.rb +251 -0
  63. data/lib/openapi_client/models/channel.rb +39 -0
  64. data/lib/openapi_client/models/delivery_report_response.rb +229 -0
  65. data/lib/openapi_client/models/delivery_result.rb +239 -0
  66. data/lib/openapi_client/models/err.rb +48 -0
  67. data/lib/openapi_client/models/error_item.rb +240 -0
  68. data/lib/openapi_client/models/error_response.rb +198 -0
  69. data/lib/openapi_client/models/message.rb +221 -0
  70. data/lib/openapi_client/models/message_result.rb +226 -0
  71. data/lib/openapi_client/models/omni_message_create_success_response.rb +229 -0
  72. data/lib/openapi_client/models/omnimessage.rb +233 -0
  73. data/lib/openapi_client/models/response_error_code.rb +43 -0
  74. data/lib/openapi_client/models/response_error_title.rb +42 -0
  75. data/lib/openapi_client/models/sms.rb +228 -0
  76. data/lib/openapi_client/models/status.rb +47 -0
  77. data/lib/openapi_client/models/viber.rb +233 -0
  78. data/lib/openapi_client/models/whats_app.rb +229 -0
  79. data/lib/openapi_client/models/whats_app_audio.rb +197 -0
  80. data/lib/openapi_client/models/whats_app_document.rb +207 -0
  81. data/lib/openapi_client/models/whats_app_image.rb +207 -0
  82. data/lib/openapi_client/models/whats_app_text.rb +209 -0
  83. data/lib/openapi_client/version.rb +15 -0
  84. data/omnichannel.gemspec +45 -0
  85. data/spec/api/delivery_report_api_spec.rb +46 -0
  86. data/spec/api/omnimessage_api_spec.rb +57 -0
  87. data/spec/api_client_spec.rb +226 -0
  88. data/spec/configuration_spec.rb +42 -0
  89. data/spec/models/channel_spec.rb +35 -0
  90. data/spec/models/delivery_report_response_spec.rb +53 -0
  91. data/spec/models/delivery_result_spec.rb +71 -0
  92. data/spec/models/err_spec.rb +35 -0
  93. data/spec/models/error_item_spec.rb +59 -0
  94. data/spec/models/error_response_spec.rb +41 -0
  95. data/spec/models/message_result_spec.rb +53 -0
  96. data/spec/models/message_spec.rb +53 -0
  97. data/spec/models/omni_message_create_success_response_spec.rb +53 -0
  98. data/spec/models/omnimessage_spec.rb +59 -0
  99. data/spec/models/response_error_code_spec.rb +35 -0
  100. data/spec/models/response_error_title_spec.rb +35 -0
  101. data/spec/models/sms_spec.rb +71 -0
  102. data/spec/models/status_spec.rb +35 -0
  103. data/spec/models/viber_spec.rb +77 -0
  104. data/spec/models/whats_app_audio_spec.rb +41 -0
  105. data/spec/models/whats_app_document_spec.rb +47 -0
  106. data/spec/models/whats_app_image_spec.rb +47 -0
  107. data/spec/models/whats_app_spec.rb +77 -0
  108. data/spec/models/whats_app_text_spec.rb +47 -0
  109. data/spec/spec_helper.rb +111 -0
  110. data/templates/README.mustache +114 -0
  111. metadata +358 -0
@@ -0,0 +1,229 @@
1
+ =begin
2
+ #Omnichannel API
3
+
4
+ #Messente's API which allows sending messages via various channels with fallback options.
5
+
6
+ OpenAPI spec version: 0.0.2
7
+ Contact: messente@messente.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.0.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module OpenapiClient
16
+ class WhatsApp < Message
17
+ attr_accessor :text
18
+
19
+ attr_accessor :image
20
+
21
+ attr_accessor :document
22
+
23
+ attr_accessor :audio
24
+
25
+ # Attribute mapping from ruby-style variable name to JSON key.
26
+ def self.attribute_map
27
+ {
28
+ :'text' => :'text',
29
+ :'image' => :'image',
30
+ :'document' => :'document',
31
+ :'audio' => :'audio'
32
+ }
33
+ end
34
+
35
+ # Attribute type mapping.
36
+ def self.openapi_types
37
+ {
38
+ :'text' => :'WhatsAppText',
39
+ :'image' => :'WhatsAppImage',
40
+ :'document' => :'WhatsAppDocument',
41
+ :'audio' => :'WhatsAppAudio'
42
+ }
43
+ end
44
+
45
+ # List of class defined in allOf (OpenAPI v3)
46
+ def self.openapi_all_of
47
+ [
48
+ :'Message'
49
+ ]
50
+ end
51
+
52
+ # Initializes the object
53
+ # @param [Hash] attributes Model attributes in the form of hash
54
+ def initialize(attributes = {})
55
+ return unless attributes.is_a?(Hash)
56
+
57
+ # convert string to symbol for hash key
58
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
59
+
60
+ # call parent's initialize
61
+ super(attributes)
62
+
63
+ if attributes.has_key?(:'text')
64
+ self.text = attributes[:'text']
65
+ end
66
+
67
+ if attributes.has_key?(:'image')
68
+ self.image = attributes[:'image']
69
+ end
70
+
71
+ if attributes.has_key?(:'document')
72
+ self.document = attributes[:'document']
73
+ end
74
+
75
+ if attributes.has_key?(:'audio')
76
+ self.audio = attributes[:'audio']
77
+ end
78
+ end
79
+
80
+ # Show invalid properties with the reasons. Usually used together with valid?
81
+ # @return Array for valid properties with the reasons
82
+ def list_invalid_properties
83
+ invalid_properties = super
84
+ invalid_properties
85
+ end
86
+
87
+ # Check to see if the all the properties in the model are valid
88
+ # @return true if the model is valid
89
+ def valid?
90
+ true && super
91
+ end
92
+
93
+ # Checks equality by comparing each attribute.
94
+ # @param [Object] Object to be compared
95
+ def ==(o)
96
+ return true if self.equal?(o)
97
+ self.class == o.class &&
98
+ text == o.text &&
99
+ image == o.image &&
100
+ document == o.document &&
101
+ audio == o.audio && super(o)
102
+ end
103
+
104
+ # @see the `==` method
105
+ # @param [Object] Object to be compared
106
+ def eql?(o)
107
+ self == o
108
+ end
109
+
110
+ # Calculates hash code according to all attributes.
111
+ # @return [Fixnum] Hash code
112
+ def hash
113
+ [text, image, document, audio].hash
114
+ end
115
+
116
+ # Builds the object from hash
117
+ # @param [Hash] attributes Model attributes in the form of hash
118
+ # @return [Object] Returns the model itself
119
+ def self.build_from_hash(attributes)
120
+ new.build_from_hash(attributes)
121
+ end
122
+
123
+ # Builds the object from hash
124
+ # @param [Hash] attributes Model attributes in the form of hash
125
+ # @return [Object] Returns the model itself
126
+ def build_from_hash(attributes)
127
+ return nil unless attributes.is_a?(Hash)
128
+ super(attributes)
129
+ self.class.openapi_types.each_pair do |key, type|
130
+ if type =~ /\AArray<(.*)>/i
131
+ # check to ensure the input is an array given that the attribute
132
+ # is documented as an array but the input is not
133
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
134
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
135
+ end
136
+ elsif !attributes[self.class.attribute_map[key]].nil?
137
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
138
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
139
+ end
140
+
141
+ self
142
+ end
143
+
144
+ # Deserializes the data based on type
145
+ # @param string type Data type
146
+ # @param string value Value to be deserialized
147
+ # @return [Object] Deserialized data
148
+ def _deserialize(type, value)
149
+ case type.to_sym
150
+ when :DateTime
151
+ DateTime.parse(value)
152
+ when :Date
153
+ Date.parse(value)
154
+ when :String
155
+ value.to_s
156
+ when :Integer
157
+ value.to_i
158
+ when :Float
159
+ value.to_f
160
+ when :BOOLEAN
161
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
162
+ true
163
+ else
164
+ false
165
+ end
166
+ when :Object
167
+ # generic object (usually a Hash), return directly
168
+ value
169
+ when /\AArray<(?<inner_type>.+)>\z/
170
+ inner_type = Regexp.last_match[:inner_type]
171
+ value.map { |v| _deserialize(inner_type, v) }
172
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
173
+ k_type = Regexp.last_match[:k_type]
174
+ v_type = Regexp.last_match[:v_type]
175
+ {}.tap do |hash|
176
+ value.each do |k, v|
177
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
178
+ end
179
+ end
180
+ else # model
181
+ OpenapiClient.const_get(type).build_from_hash(value)
182
+ end
183
+ end
184
+
185
+ # Returns the string representation of the object
186
+ # @return [String] String presentation of the object
187
+ def to_s
188
+ to_hash.to_s
189
+ end
190
+
191
+ # to_body is an alias to to_hash (backward compatibility)
192
+ # @return [Hash] Returns the object in the form of hash
193
+ def to_body
194
+ to_hash
195
+ end
196
+
197
+ # Returns the object in the form of hash
198
+ # @return [Hash] Returns the object in the form of hash
199
+ def to_hash
200
+ hash = super
201
+ self.class.attribute_map.each_pair do |attr, param|
202
+ value = self.send(attr)
203
+ next if value.nil?
204
+ hash[param] = _to_hash(value)
205
+ end
206
+ hash
207
+ end
208
+
209
+ # Outputs non-array value in the form of hash
210
+ # For object, use to_hash. Otherwise, just return the value
211
+ # @param [Object] value Any valid value
212
+ # @return [Hash] Returns the value in the form of hash
213
+ def _to_hash(value)
214
+ if value.is_a?(Array)
215
+ value.compact.map { |v| _to_hash(v) }
216
+ elsif value.is_a?(Hash)
217
+ {}.tap do |hash|
218
+ value.each { |k, v| hash[k] = _to_hash(v) }
219
+ end
220
+ elsif value.respond_to? :to_hash
221
+ value.to_hash
222
+ else
223
+ value
224
+ end
225
+ end
226
+
227
+ end
228
+
229
+ end
@@ -0,0 +1,197 @@
1
+ =begin
2
+ #Omnichannel API
3
+
4
+ #Messente's API which allows sending messages via various channels with fallback options.
5
+
6
+ OpenAPI spec version: 0.0.2
7
+ Contact: messente@messente.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.0.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module OpenapiClient
16
+ class WhatsAppAudio
17
+ # Base64-encoded audio
18
+ attr_accessor :content
19
+
20
+ # Attribute mapping from ruby-style variable name to JSON key.
21
+ def self.attribute_map
22
+ {
23
+ :'content' => :'content'
24
+ }
25
+ end
26
+
27
+ # Attribute type mapping.
28
+ def self.openapi_types
29
+ {
30
+ :'content' => :'String'
31
+ }
32
+ end
33
+
34
+ # Initializes the object
35
+ # @param [Hash] attributes Model attributes in the form of hash
36
+ def initialize(attributes = {})
37
+ return unless attributes.is_a?(Hash)
38
+
39
+ # convert string to symbol for hash key
40
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
41
+
42
+ if attributes.has_key?(:'content')
43
+ self.content = attributes[:'content']
44
+ end
45
+ end
46
+
47
+ # Show invalid properties with the reasons. Usually used together with valid?
48
+ # @return Array for valid properties with the reasons
49
+ def list_invalid_properties
50
+ invalid_properties = Array.new
51
+ if @content.nil?
52
+ invalid_properties.push('invalid value for "content", content cannot be nil.')
53
+ end
54
+
55
+ invalid_properties
56
+ end
57
+
58
+ # Check to see if the all the properties in the model are valid
59
+ # @return true if the model is valid
60
+ def valid?
61
+ return false if @content.nil?
62
+ true
63
+ end
64
+
65
+ # Checks equality by comparing each attribute.
66
+ # @param [Object] Object to be compared
67
+ def ==(o)
68
+ return true if self.equal?(o)
69
+ self.class == o.class &&
70
+ content == o.content
71
+ end
72
+
73
+ # @see the `==` method
74
+ # @param [Object] Object to be compared
75
+ def eql?(o)
76
+ self == o
77
+ end
78
+
79
+ # Calculates hash code according to all attributes.
80
+ # @return [Fixnum] Hash code
81
+ def hash
82
+ [content].hash
83
+ end
84
+
85
+ # Builds the object from hash
86
+ # @param [Hash] attributes Model attributes in the form of hash
87
+ # @return [Object] Returns the model itself
88
+ def self.build_from_hash(attributes)
89
+ new.build_from_hash(attributes)
90
+ end
91
+
92
+ # Builds the object from hash
93
+ # @param [Hash] attributes Model attributes in the form of hash
94
+ # @return [Object] Returns the model itself
95
+ def build_from_hash(attributes)
96
+ return nil unless attributes.is_a?(Hash)
97
+ self.class.openapi_types.each_pair do |key, type|
98
+ if type =~ /\AArray<(.*)>/i
99
+ # check to ensure the input is an array given that the attribute
100
+ # is documented as an array but the input is not
101
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
102
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
103
+ end
104
+ elsif !attributes[self.class.attribute_map[key]].nil?
105
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
106
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
107
+ end
108
+
109
+ self
110
+ end
111
+
112
+ # Deserializes the data based on type
113
+ # @param string type Data type
114
+ # @param string value Value to be deserialized
115
+ # @return [Object] Deserialized data
116
+ def _deserialize(type, value)
117
+ case type.to_sym
118
+ when :DateTime
119
+ DateTime.parse(value)
120
+ when :Date
121
+ Date.parse(value)
122
+ when :String
123
+ value.to_s
124
+ when :Integer
125
+ value.to_i
126
+ when :Float
127
+ value.to_f
128
+ when :BOOLEAN
129
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
130
+ true
131
+ else
132
+ false
133
+ end
134
+ when :Object
135
+ # generic object (usually a Hash), return directly
136
+ value
137
+ when /\AArray<(?<inner_type>.+)>\z/
138
+ inner_type = Regexp.last_match[:inner_type]
139
+ value.map { |v| _deserialize(inner_type, v) }
140
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
141
+ k_type = Regexp.last_match[:k_type]
142
+ v_type = Regexp.last_match[:v_type]
143
+ {}.tap do |hash|
144
+ value.each do |k, v|
145
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
146
+ end
147
+ end
148
+ else # model
149
+ OpenapiClient.const_get(type).build_from_hash(value)
150
+ end
151
+ end
152
+
153
+ # Returns the string representation of the object
154
+ # @return [String] String presentation of the object
155
+ def to_s
156
+ to_hash.to_s
157
+ end
158
+
159
+ # to_body is an alias to to_hash (backward compatibility)
160
+ # @return [Hash] Returns the object in the form of hash
161
+ def to_body
162
+ to_hash
163
+ end
164
+
165
+ # Returns the object in the form of hash
166
+ # @return [Hash] Returns the object in the form of hash
167
+ def to_hash
168
+ hash = {}
169
+ self.class.attribute_map.each_pair do |attr, param|
170
+ value = self.send(attr)
171
+ next if value.nil?
172
+ hash[param] = _to_hash(value)
173
+ end
174
+ hash
175
+ end
176
+
177
+ # Outputs non-array value in the form of hash
178
+ # For object, use to_hash. Otherwise, just return the value
179
+ # @param [Object] value Any valid value
180
+ # @return [Hash] Returns the value in the form of hash
181
+ def _to_hash(value)
182
+ if value.is_a?(Array)
183
+ value.compact.map { |v| _to_hash(v) }
184
+ elsif value.is_a?(Hash)
185
+ {}.tap do |hash|
186
+ value.each { |k, v| hash[k] = _to_hash(v) }
187
+ end
188
+ elsif value.respond_to? :to_hash
189
+ value.to_hash
190
+ else
191
+ value
192
+ end
193
+ end
194
+
195
+ end
196
+
197
+ end
@@ -0,0 +1,207 @@
1
+ =begin
2
+ #Omnichannel API
3
+
4
+ #Messente's API which allows sending messages via various channels with fallback options.
5
+
6
+ OpenAPI spec version: 0.0.2
7
+ Contact: messente@messente.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.0.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module OpenapiClient
16
+ class WhatsAppDocument
17
+ # Description for the document
18
+ attr_accessor :caption
19
+
20
+ # Base64-encoded image
21
+ attr_accessor :content
22
+
23
+ # Attribute mapping from ruby-style variable name to JSON key.
24
+ def self.attribute_map
25
+ {
26
+ :'caption' => :'caption',
27
+ :'content' => :'content'
28
+ }
29
+ end
30
+
31
+ # Attribute type mapping.
32
+ def self.openapi_types
33
+ {
34
+ :'caption' => :'String',
35
+ :'content' => :'String'
36
+ }
37
+ end
38
+
39
+ # Initializes the object
40
+ # @param [Hash] attributes Model attributes in the form of hash
41
+ def initialize(attributes = {})
42
+ return unless attributes.is_a?(Hash)
43
+
44
+ # convert string to symbol for hash key
45
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
46
+
47
+ if attributes.has_key?(:'caption')
48
+ self.caption = attributes[:'caption']
49
+ end
50
+
51
+ if attributes.has_key?(:'content')
52
+ self.content = attributes[:'content']
53
+ end
54
+ end
55
+
56
+ # Show invalid properties with the reasons. Usually used together with valid?
57
+ # @return Array for valid properties with the reasons
58
+ def list_invalid_properties
59
+ invalid_properties = Array.new
60
+ if @content.nil?
61
+ invalid_properties.push('invalid value for "content", content cannot be nil.')
62
+ end
63
+
64
+ invalid_properties
65
+ end
66
+
67
+ # Check to see if the all the properties in the model are valid
68
+ # @return true if the model is valid
69
+ def valid?
70
+ return false if @content.nil?
71
+ true
72
+ end
73
+
74
+ # Checks equality by comparing each attribute.
75
+ # @param [Object] Object to be compared
76
+ def ==(o)
77
+ return true if self.equal?(o)
78
+ self.class == o.class &&
79
+ caption == o.caption &&
80
+ content == o.content
81
+ end
82
+
83
+ # @see the `==` method
84
+ # @param [Object] Object to be compared
85
+ def eql?(o)
86
+ self == o
87
+ end
88
+
89
+ # Calculates hash code according to all attributes.
90
+ # @return [Fixnum] Hash code
91
+ def hash
92
+ [caption, content].hash
93
+ end
94
+
95
+ # Builds the object from hash
96
+ # @param [Hash] attributes Model attributes in the form of hash
97
+ # @return [Object] Returns the model itself
98
+ def self.build_from_hash(attributes)
99
+ new.build_from_hash(attributes)
100
+ end
101
+
102
+ # Builds the object from hash
103
+ # @param [Hash] attributes Model attributes in the form of hash
104
+ # @return [Object] Returns the model itself
105
+ def build_from_hash(attributes)
106
+ return nil unless attributes.is_a?(Hash)
107
+ self.class.openapi_types.each_pair do |key, type|
108
+ if type =~ /\AArray<(.*)>/i
109
+ # check to ensure the input is an array given that the attribute
110
+ # is documented as an array but the input is not
111
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
112
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
113
+ end
114
+ elsif !attributes[self.class.attribute_map[key]].nil?
115
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
116
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
117
+ end
118
+
119
+ self
120
+ end
121
+
122
+ # Deserializes the data based on type
123
+ # @param string type Data type
124
+ # @param string value Value to be deserialized
125
+ # @return [Object] Deserialized data
126
+ def _deserialize(type, value)
127
+ case type.to_sym
128
+ when :DateTime
129
+ DateTime.parse(value)
130
+ when :Date
131
+ Date.parse(value)
132
+ when :String
133
+ value.to_s
134
+ when :Integer
135
+ value.to_i
136
+ when :Float
137
+ value.to_f
138
+ when :BOOLEAN
139
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
140
+ true
141
+ else
142
+ false
143
+ end
144
+ when :Object
145
+ # generic object (usually a Hash), return directly
146
+ value
147
+ when /\AArray<(?<inner_type>.+)>\z/
148
+ inner_type = Regexp.last_match[:inner_type]
149
+ value.map { |v| _deserialize(inner_type, v) }
150
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
151
+ k_type = Regexp.last_match[:k_type]
152
+ v_type = Regexp.last_match[:v_type]
153
+ {}.tap do |hash|
154
+ value.each do |k, v|
155
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
156
+ end
157
+ end
158
+ else # model
159
+ OpenapiClient.const_get(type).build_from_hash(value)
160
+ end
161
+ end
162
+
163
+ # Returns the string representation of the object
164
+ # @return [String] String presentation of the object
165
+ def to_s
166
+ to_hash.to_s
167
+ end
168
+
169
+ # to_body is an alias to to_hash (backward compatibility)
170
+ # @return [Hash] Returns the object in the form of hash
171
+ def to_body
172
+ to_hash
173
+ end
174
+
175
+ # Returns the object in the form of hash
176
+ # @return [Hash] Returns the object in the form of hash
177
+ def to_hash
178
+ hash = {}
179
+ self.class.attribute_map.each_pair do |attr, param|
180
+ value = self.send(attr)
181
+ next if value.nil?
182
+ hash[param] = _to_hash(value)
183
+ end
184
+ hash
185
+ end
186
+
187
+ # Outputs non-array value in the form of hash
188
+ # For object, use to_hash. Otherwise, just return the value
189
+ # @param [Object] value Any valid value
190
+ # @return [Hash] Returns the value in the form of hash
191
+ def _to_hash(value)
192
+ if value.is_a?(Array)
193
+ value.compact.map { |v| _to_hash(v) }
194
+ elsif value.is_a?(Hash)
195
+ {}.tap do |hash|
196
+ value.each { |k, v| hash[k] = _to_hash(v) }
197
+ end
198
+ elsif value.respond_to? :to_hash
199
+ value.to_hash
200
+ else
201
+ value
202
+ end
203
+ end
204
+
205
+ end
206
+
207
+ end