omnichannel 1.0.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 (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,43 @@
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 ResponseErrorCode
17
+
18
+ N101 = '101'.freeze
19
+ N102 = '102'.freeze
20
+ N103 = '103'.freeze
21
+ N104 = '104'.freeze
22
+ N105 = '105'.freeze
23
+ N106 = '106'.freeze
24
+ N107 = '107'.freeze
25
+
26
+ # Builds the enum from string
27
+ # @param [String] The enum value in the form of the string
28
+ # @return [String] The enum value
29
+ def self.build_from_hash(value)
30
+ new.build_from_hash(value)
31
+ end
32
+
33
+ # Builds the enum from string
34
+ # @param [String] The enum value in the form of the string
35
+ # @return [String] The enum value
36
+ def build_from_hash(value)
37
+ constantValues = ResponseErrorCode.constants.select { |c| ResponseErrorCode::const_get(c) == value }
38
+ raise "Invalid ENUM value #{value} for class #ResponseErrorCode" if constantValues.empty?
39
+ value
40
+ end
41
+ end
42
+
43
+ end
@@ -0,0 +1,42 @@
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 ResponseErrorTitle
17
+
18
+ NOT_FOUND = 'Not found'.freeze
19
+ FORBIDDEN = 'Forbidden'.freeze
20
+ UNAUTHORIZED = 'Unauthorized'.freeze
21
+ INVALID_DATA = 'Invalid data'.freeze
22
+ INTERNAL_SERVER_ERROR = 'Internal Server Error'.freeze
23
+ MISSING_DATA = 'Missing data'.freeze
24
+
25
+ # Builds the enum from string
26
+ # @param [String] The enum value in the form of the string
27
+ # @return [String] The enum value
28
+ def self.build_from_hash(value)
29
+ new.build_from_hash(value)
30
+ end
31
+
32
+ # Builds the enum from string
33
+ # @param [String] The enum value in the form of the string
34
+ # @return [String] The enum value
35
+ def build_from_hash(value)
36
+ constantValues = ResponseErrorTitle.constants.select { |c| ResponseErrorTitle::const_get(c) == value }
37
+ raise "Invalid ENUM value #{value} for class #ResponseErrorTitle" if constantValues.empty?
38
+ value
39
+ end
40
+ end
41
+
42
+ end
@@ -0,0 +1,228 @@
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 SMS < Message
17
+ # Text content of the SMS
18
+ attr_accessor :text
19
+
20
+ # Defines how non-GSM characters will be treated: - \"on\" Use replacement settings from the account's [API Auto Replace settings page](https://dashboard.messente.com/api-settings/auto-replace)(default) - \"full\" All non GSM 03.38 characters will be replaced with suitable alternatives - \"off\" Message content is not modified in any way
21
+ attr_accessor :autoconvert
22
+
23
+ # hex-encoded string containing SMS UDH
24
+ attr_accessor :udh
25
+
26
+ # Attribute mapping from ruby-style variable name to JSON key.
27
+ def self.attribute_map
28
+ {
29
+ :'text' => :'text',
30
+ :'autoconvert' => :'autoconvert',
31
+ :'udh' => :'udh'
32
+ }
33
+ end
34
+
35
+ # Attribute type mapping.
36
+ def self.openapi_types
37
+ {
38
+ :'text' => :'String',
39
+ :'autoconvert' => :'Float',
40
+ :'udh' => :'String'
41
+ }
42
+ end
43
+
44
+ # List of class defined in allOf (OpenAPI v3)
45
+ def self.openapi_all_of
46
+ [
47
+ :'Message'
48
+ ]
49
+ end
50
+
51
+ # Initializes the object
52
+ # @param [Hash] attributes Model attributes in the form of hash
53
+ def initialize(attributes = {})
54
+ return unless attributes.is_a?(Hash)
55
+
56
+ # convert string to symbol for hash key
57
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
58
+
59
+ # call parent's initialize
60
+ super(attributes)
61
+
62
+ if attributes.has_key?(:'text')
63
+ self.text = attributes[:'text']
64
+ end
65
+
66
+ if attributes.has_key?(:'autoconvert')
67
+ self.autoconvert = attributes[:'autoconvert']
68
+ end
69
+
70
+ if attributes.has_key?(:'udh')
71
+ self.udh = attributes[:'udh']
72
+ end
73
+ end
74
+
75
+ # Show invalid properties with the reasons. Usually used together with valid?
76
+ # @return Array for valid properties with the reasons
77
+ def list_invalid_properties
78
+ invalid_properties = super
79
+ if @text.nil?
80
+ invalid_properties.push('invalid value for "text", text cannot be nil.')
81
+ end
82
+
83
+ invalid_properties
84
+ end
85
+
86
+ # Check to see if the all the properties in the model are valid
87
+ # @return true if the model is valid
88
+ def valid?
89
+ return false if @text.nil?
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
+ autoconvert == o.autoconvert &&
100
+ udh == o.udh && super(o)
101
+ end
102
+
103
+ # @see the `==` method
104
+ # @param [Object] Object to be compared
105
+ def eql?(o)
106
+ self == o
107
+ end
108
+
109
+ # Calculates hash code according to all attributes.
110
+ # @return [Fixnum] Hash code
111
+ def hash
112
+ [text, autoconvert, udh].hash
113
+ end
114
+
115
+ # Builds the object from hash
116
+ # @param [Hash] attributes Model attributes in the form of hash
117
+ # @return [Object] Returns the model itself
118
+ def self.build_from_hash(attributes)
119
+ new.build_from_hash(attributes)
120
+ end
121
+
122
+ # Builds the object from hash
123
+ # @param [Hash] attributes Model attributes in the form of hash
124
+ # @return [Object] Returns the model itself
125
+ def build_from_hash(attributes)
126
+ return nil unless attributes.is_a?(Hash)
127
+ super(attributes)
128
+ self.class.openapi_types.each_pair do |key, type|
129
+ if type =~ /\AArray<(.*)>/i
130
+ # check to ensure the input is an array given that the attribute
131
+ # is documented as an array but the input is not
132
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
133
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
134
+ end
135
+ elsif !attributes[self.class.attribute_map[key]].nil?
136
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
137
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
138
+ end
139
+
140
+ self
141
+ end
142
+
143
+ # Deserializes the data based on type
144
+ # @param string type Data type
145
+ # @param string value Value to be deserialized
146
+ # @return [Object] Deserialized data
147
+ def _deserialize(type, value)
148
+ case type.to_sym
149
+ when :DateTime
150
+ DateTime.parse(value)
151
+ when :Date
152
+ Date.parse(value)
153
+ when :String
154
+ value.to_s
155
+ when :Integer
156
+ value.to_i
157
+ when :Float
158
+ value.to_f
159
+ when :BOOLEAN
160
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
161
+ true
162
+ else
163
+ false
164
+ end
165
+ when :Object
166
+ # generic object (usually a Hash), return directly
167
+ value
168
+ when /\AArray<(?<inner_type>.+)>\z/
169
+ inner_type = Regexp.last_match[:inner_type]
170
+ value.map { |v| _deserialize(inner_type, v) }
171
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
172
+ k_type = Regexp.last_match[:k_type]
173
+ v_type = Regexp.last_match[:v_type]
174
+ {}.tap do |hash|
175
+ value.each do |k, v|
176
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
177
+ end
178
+ end
179
+ else # model
180
+ OpenapiClient.const_get(type).build_from_hash(value)
181
+ end
182
+ end
183
+
184
+ # Returns the string representation of the object
185
+ # @return [String] String presentation of the object
186
+ def to_s
187
+ to_hash.to_s
188
+ end
189
+
190
+ # to_body is an alias to to_hash (backward compatibility)
191
+ # @return [Hash] Returns the object in the form of hash
192
+ def to_body
193
+ to_hash
194
+ end
195
+
196
+ # Returns the object in the form of hash
197
+ # @return [Hash] Returns the object in the form of hash
198
+ def to_hash
199
+ hash = super
200
+ self.class.attribute_map.each_pair do |attr, param|
201
+ value = self.send(attr)
202
+ next if value.nil?
203
+ hash[param] = _to_hash(value)
204
+ end
205
+ hash
206
+ end
207
+
208
+ # Outputs non-array value in the form of hash
209
+ # For object, use to_hash. Otherwise, just return the value
210
+ # @param [Object] value Any valid value
211
+ # @return [Hash] Returns the value in the form of hash
212
+ def _to_hash(value)
213
+ if value.is_a?(Array)
214
+ value.compact.map { |v| _to_hash(v) }
215
+ elsif value.is_a?(Hash)
216
+ {}.tap do |hash|
217
+ value.each { |k, v| hash[k] = _to_hash(v) }
218
+ end
219
+ elsif value.respond_to? :to_hash
220
+ value.to_hash
221
+ else
222
+ value
223
+ end
224
+ end
225
+
226
+ end
227
+
228
+ end
@@ -0,0 +1,47 @@
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 Status
17
+
18
+ ACK = 'ACK'.freeze
19
+ DELIVRD = 'DELIVRD'.freeze
20
+ UNDELIV = 'UNDELIV'.freeze
21
+ FAILED = 'FAILED'.freeze
22
+ UNKNOWN = 'UNKNOWN'.freeze
23
+ ACCEPTD = 'ACCEPTD'.freeze
24
+ REJECTD = 'REJECTD'.freeze
25
+ DELETED = 'DELETED'.freeze
26
+ EXPIRED = 'EXPIRED'.freeze
27
+ NACK = 'NACK'.freeze
28
+ SEEN = 'SEEN'.freeze
29
+
30
+ # Builds the enum from string
31
+ # @param [String] The enum value in the form of the string
32
+ # @return [String] The enum value
33
+ def self.build_from_hash(value)
34
+ new.build_from_hash(value)
35
+ end
36
+
37
+ # Builds the enum from string
38
+ # @param [String] The enum value in the form of the string
39
+ # @return [String] The enum value
40
+ def build_from_hash(value)
41
+ constantValues = Status.constants.select { |c| Status::const_get(c) == value }
42
+ raise "Invalid ENUM value #{value} for class #Status" if constantValues.empty?
43
+ value
44
+ end
45
+ end
46
+
47
+ end
@@ -0,0 +1,233 @@
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 Viber < Message
17
+ # Plaintext content for Viber
18
+ attr_accessor :text
19
+
20
+ # URL for the embedded image. Valid combinations: 1) 'image_url' 2) 'text', 'image_url', 'button_url', 'button_text'
21
+ attr_accessor :image_url
22
+
23
+ # URL of the button, must be specified along with 'text', 'button_text' and 'image_url' (optional)
24
+ attr_accessor :button_url
25
+
26
+ # Must be specified along with 'text', 'button_url', 'button_text', 'image_url' (optional)
27
+ attr_accessor :button_text
28
+
29
+ # Attribute mapping from ruby-style variable name to JSON key.
30
+ def self.attribute_map
31
+ {
32
+ :'text' => :'text',
33
+ :'image_url' => :'image_url',
34
+ :'button_url' => :'button_url',
35
+ :'button_text' => :'button_text'
36
+ }
37
+ end
38
+
39
+ # Attribute type mapping.
40
+ def self.openapi_types
41
+ {
42
+ :'text' => :'String',
43
+ :'image_url' => :'String',
44
+ :'button_url' => :'String',
45
+ :'button_text' => :'String'
46
+ }
47
+ end
48
+
49
+ # List of class defined in allOf (OpenAPI v3)
50
+ def self.openapi_all_of
51
+ [
52
+ :'Message'
53
+ ]
54
+ end
55
+
56
+ # Initializes the object
57
+ # @param [Hash] attributes Model attributes in the form of hash
58
+ def initialize(attributes = {})
59
+ return unless attributes.is_a?(Hash)
60
+
61
+ # convert string to symbol for hash key
62
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
63
+
64
+ # call parent's initialize
65
+ super(attributes)
66
+
67
+ if attributes.has_key?(:'text')
68
+ self.text = attributes[:'text']
69
+ end
70
+
71
+ if attributes.has_key?(:'image_url')
72
+ self.image_url = attributes[:'image_url']
73
+ end
74
+
75
+ if attributes.has_key?(:'button_url')
76
+ self.button_url = attributes[:'button_url']
77
+ end
78
+
79
+ if attributes.has_key?(:'button_text')
80
+ self.button_text = attributes[:'button_text']
81
+ end
82
+ end
83
+
84
+ # Show invalid properties with the reasons. Usually used together with valid?
85
+ # @return Array for valid properties with the reasons
86
+ def list_invalid_properties
87
+ invalid_properties = super
88
+ invalid_properties
89
+ end
90
+
91
+ # Check to see if the all the properties in the model are valid
92
+ # @return true if the model is valid
93
+ def valid?
94
+ true && super
95
+ end
96
+
97
+ # Checks equality by comparing each attribute.
98
+ # @param [Object] Object to be compared
99
+ def ==(o)
100
+ return true if self.equal?(o)
101
+ self.class == o.class &&
102
+ text == o.text &&
103
+ image_url == o.image_url &&
104
+ button_url == o.button_url &&
105
+ button_text == o.button_text && super(o)
106
+ end
107
+
108
+ # @see the `==` method
109
+ # @param [Object] Object to be compared
110
+ def eql?(o)
111
+ self == o
112
+ end
113
+
114
+ # Calculates hash code according to all attributes.
115
+ # @return [Fixnum] Hash code
116
+ def hash
117
+ [text, image_url, button_url, button_text].hash
118
+ end
119
+
120
+ # Builds the object from hash
121
+ # @param [Hash] attributes Model attributes in the form of hash
122
+ # @return [Object] Returns the model itself
123
+ def self.build_from_hash(attributes)
124
+ new.build_from_hash(attributes)
125
+ end
126
+
127
+ # Builds the object from hash
128
+ # @param [Hash] attributes Model attributes in the form of hash
129
+ # @return [Object] Returns the model itself
130
+ def build_from_hash(attributes)
131
+ return nil unless attributes.is_a?(Hash)
132
+ super(attributes)
133
+ self.class.openapi_types.each_pair do |key, type|
134
+ if type =~ /\AArray<(.*)>/i
135
+ # check to ensure the input is an array given that the attribute
136
+ # is documented as an array but the input is not
137
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
138
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
139
+ end
140
+ elsif !attributes[self.class.attribute_map[key]].nil?
141
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
142
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
143
+ end
144
+
145
+ self
146
+ end
147
+
148
+ # Deserializes the data based on type
149
+ # @param string type Data type
150
+ # @param string value Value to be deserialized
151
+ # @return [Object] Deserialized data
152
+ def _deserialize(type, value)
153
+ case type.to_sym
154
+ when :DateTime
155
+ DateTime.parse(value)
156
+ when :Date
157
+ Date.parse(value)
158
+ when :String
159
+ value.to_s
160
+ when :Integer
161
+ value.to_i
162
+ when :Float
163
+ value.to_f
164
+ when :BOOLEAN
165
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
166
+ true
167
+ else
168
+ false
169
+ end
170
+ when :Object
171
+ # generic object (usually a Hash), return directly
172
+ value
173
+ when /\AArray<(?<inner_type>.+)>\z/
174
+ inner_type = Regexp.last_match[:inner_type]
175
+ value.map { |v| _deserialize(inner_type, v) }
176
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
177
+ k_type = Regexp.last_match[:k_type]
178
+ v_type = Regexp.last_match[:v_type]
179
+ {}.tap do |hash|
180
+ value.each do |k, v|
181
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
182
+ end
183
+ end
184
+ else # model
185
+ OpenapiClient.const_get(type).build_from_hash(value)
186
+ end
187
+ end
188
+
189
+ # Returns the string representation of the object
190
+ # @return [String] String presentation of the object
191
+ def to_s
192
+ to_hash.to_s
193
+ end
194
+
195
+ # to_body is an alias to to_hash (backward compatibility)
196
+ # @return [Hash] Returns the object in the form of hash
197
+ def to_body
198
+ to_hash
199
+ end
200
+
201
+ # Returns the object in the form of hash
202
+ # @return [Hash] Returns the object in the form of hash
203
+ def to_hash
204
+ hash = super
205
+ self.class.attribute_map.each_pair do |attr, param|
206
+ value = self.send(attr)
207
+ next if value.nil?
208
+ hash[param] = _to_hash(value)
209
+ end
210
+ hash
211
+ end
212
+
213
+ # Outputs non-array value in the form of hash
214
+ # For object, use to_hash. Otherwise, just return the value
215
+ # @param [Object] value Any valid value
216
+ # @return [Hash] Returns the value in the form of hash
217
+ def _to_hash(value)
218
+ if value.is_a?(Array)
219
+ value.compact.map { |v| _to_hash(v) }
220
+ elsif value.is_a?(Hash)
221
+ {}.tap do |hash|
222
+ value.each { |k, v| hash[k] = _to_hash(v) }
223
+ end
224
+ elsif value.respond_to? :to_hash
225
+ value.to_hash
226
+ else
227
+ value
228
+ end
229
+ end
230
+
231
+ end
232
+
233
+ end