scrapebadger 0.1.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 (185) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/LICENSE +21 -0
  4. data/README.md +548 -0
  5. data/Rakefile +10 -0
  6. data/docs/AccountApi.md +76 -0
  7. data/docs/AccountInfo.md +28 -0
  8. data/docs/AmazonApi.md +1244 -0
  9. data/docs/ApartmentsApi.md +373 -0
  10. data/docs/BaiduApi.md +447 -0
  11. data/docs/BillingLogListResponse.md +24 -0
  12. data/docs/BillingLogResponse.md +32 -0
  13. data/docs/BingApi.md +610 -0
  14. data/docs/ChatGPTApi.md +521 -0
  15. data/docs/DepopApi.md +542 -0
  16. data/docs/DuckDuckGoApi.md +700 -0
  17. data/docs/EBayApi.md +1019 -0
  18. data/docs/FacebookApi.md +1671 -0
  19. data/docs/FilterRuleCreate.md +28 -0
  20. data/docs/FilterRuleDeliveryLogListResponse.md +24 -0
  21. data/docs/FilterRuleDeliveryLogResponse.md +44 -0
  22. data/docs/FilterRuleListResponse.md +24 -0
  23. data/docs/FilterRuleResponse.md +40 -0
  24. data/docs/FilterRuleUpdate.md +30 -0
  25. data/docs/FilterRuleValidateRequest.md +18 -0
  26. data/docs/FilterRuleValidateResponse.md +22 -0
  27. data/docs/GoogleApi.md +3175 -0
  28. data/docs/HTTPValidationError.md +18 -0
  29. data/docs/IdealistaApi.md +822 -0
  30. data/docs/ImmobiliareApi.md +773 -0
  31. data/docs/InstagramApi.md +1673 -0
  32. data/docs/LeboncoinApi.md +884 -0
  33. data/docs/LinkedInApi.md +925 -0
  34. data/docs/LoopNetApi.md +529 -0
  35. data/docs/PortalApiRoutersV1TwitterFilterRulesFilterRulePricingResponse.md +20 -0
  36. data/docs/RealtorApi.md +474 -0
  37. data/docs/RedditApi.md +1677 -0
  38. data/docs/RedfinApi.md +616 -0
  39. data/docs/StreamMonitorCreate.md +26 -0
  40. data/docs/StreamMonitorListResponse.md +24 -0
  41. data/docs/StreamMonitorResponse.md +42 -0
  42. data/docs/StreamMonitorUpdate.md +28 -0
  43. data/docs/SubscriptionInfo.md +40 -0
  44. data/docs/TikTokApi.md +2104 -0
  45. data/docs/TweetDeliveryLogListResponse.md +24 -0
  46. data/docs/TweetDeliveryLogResponse.md +44 -0
  47. data/docs/TwitterApi.md +4091 -0
  48. data/docs/ValidationError.md +22 -0
  49. data/docs/ValidationErrorLocInner.md +15 -0
  50. data/docs/VintedApi.md +766 -0
  51. data/docs/WalmartApi.md +904 -0
  52. data/docs/WebApi.md +634 -0
  53. data/docs/WebhookCreate.md +22 -0
  54. data/docs/WebhookListItem.md +28 -0
  55. data/docs/WebhookListResponse.md +20 -0
  56. data/docs/WebhookResponse.md +26 -0
  57. data/docs/WebhookTestRequest.md +18 -0
  58. data/docs/WebhookTestResponse.md +24 -0
  59. data/docs/YahooApi.md +602 -0
  60. data/docs/YandexApi.md +450 -0
  61. data/docs/YouTubeApi.md +2872 -0
  62. data/docs/ZillowApi.md +622 -0
  63. data/git_push.sh +57 -0
  64. data/lib/scrapebadger/api/account_api.rb +79 -0
  65. data/lib/scrapebadger/api/amazon_api.rb +1165 -0
  66. data/lib/scrapebadger/api/apartments_api.rb +377 -0
  67. data/lib/scrapebadger/api/baidu_api.rb +436 -0
  68. data/lib/scrapebadger/api/bing_api.rb +580 -0
  69. data/lib/scrapebadger/api/chat_gpt_api.rb +466 -0
  70. data/lib/scrapebadger/api/depop_api.rb +518 -0
  71. data/lib/scrapebadger/api/duck_duck_go_api.rb +675 -0
  72. data/lib/scrapebadger/api/e_bay_api.rb +1029 -0
  73. data/lib/scrapebadger/api/facebook_api.rb +1492 -0
  74. data/lib/scrapebadger/api/google_api.rb +3191 -0
  75. data/lib/scrapebadger/api/idealista_api.rb +864 -0
  76. data/lib/scrapebadger/api/immobiliare_api.rb +734 -0
  77. data/lib/scrapebadger/api/instagram_api.rb +1555 -0
  78. data/lib/scrapebadger/api/leboncoin_api.rb +818 -0
  79. data/lib/scrapebadger/api/linked_in_api.rb +832 -0
  80. data/lib/scrapebadger/api/loop_net_api.rb +503 -0
  81. data/lib/scrapebadger/api/realtor_api.rb +481 -0
  82. data/lib/scrapebadger/api/reddit_api.rb +1601 -0
  83. data/lib/scrapebadger/api/redfin_api.rb +625 -0
  84. data/lib/scrapebadger/api/tik_tok_api.rb +2029 -0
  85. data/lib/scrapebadger/api/twitter_api.rb +3696 -0
  86. data/lib/scrapebadger/api/vinted_api.rb +705 -0
  87. data/lib/scrapebadger/api/walmart_api.rb +876 -0
  88. data/lib/scrapebadger/api/web_api.rb +547 -0
  89. data/lib/scrapebadger/api/yahoo_api.rb +560 -0
  90. data/lib/scrapebadger/api/yandex_api.rb +422 -0
  91. data/lib/scrapebadger/api/you_tube_api.rb +2520 -0
  92. data/lib/scrapebadger/api/zillow_api.rb +634 -0
  93. data/lib/scrapebadger/api_client.rb +394 -0
  94. data/lib/scrapebadger/api_error.rb +58 -0
  95. data/lib/scrapebadger/configuration.rb +308 -0
  96. data/lib/scrapebadger/models/account_info.rb +288 -0
  97. data/lib/scrapebadger/models/billing_log_list_response.rb +272 -0
  98. data/lib/scrapebadger/models/billing_log_response.rb +334 -0
  99. data/lib/scrapebadger/models/filter_rule_create.rb +427 -0
  100. data/lib/scrapebadger/models/filter_rule_delivery_log_list_response.rb +272 -0
  101. data/lib/scrapebadger/models/filter_rule_delivery_log_response.rb +422 -0
  102. data/lib/scrapebadger/models/filter_rule_list_response.rb +272 -0
  103. data/lib/scrapebadger/models/filter_rule_response.rb +390 -0
  104. data/lib/scrapebadger/models/filter_rule_update.rb +389 -0
  105. data/lib/scrapebadger/models/filter_rule_validate_request.rb +250 -0
  106. data/lib/scrapebadger/models/filter_rule_validate_response.rb +248 -0
  107. data/lib/scrapebadger/models/http_validation_error.rb +216 -0
  108. data/lib/scrapebadger/models/portal_api_routers_v1_twitter_filter_rules_filter_rule_pricing_response.rb +238 -0
  109. data/lib/scrapebadger/models/stream_monitor_create.rb +373 -0
  110. data/lib/scrapebadger/models/stream_monitor_list_response.rb +272 -0
  111. data/lib/scrapebadger/models/stream_monitor_response.rb +406 -0
  112. data/lib/scrapebadger/models/stream_monitor_update.rb +335 -0
  113. data/lib/scrapebadger/models/subscription_info.rb +352 -0
  114. data/lib/scrapebadger/models/tweet_delivery_log_list_response.rb +272 -0
  115. data/lib/scrapebadger/models/tweet_delivery_log_response.rb +422 -0
  116. data/lib/scrapebadger/models/validation_error.rb +255 -0
  117. data/lib/scrapebadger/models/validation_error_loc_inner.rb +104 -0
  118. data/lib/scrapebadger/models/webhook_create.rb +282 -0
  119. data/lib/scrapebadger/models/webhook_list_item.rb +302 -0
  120. data/lib/scrapebadger/models/webhook_list_response.rb +240 -0
  121. data/lib/scrapebadger/models/webhook_response.rb +286 -0
  122. data/lib/scrapebadger/models/webhook_test_request.rb +223 -0
  123. data/lib/scrapebadger/models/webhook_test_response.rb +259 -0
  124. data/lib/scrapebadger/version.rb +15 -0
  125. data/lib/scrapebadger.rb +96 -0
  126. data/scrapebadger.gemspec +39 -0
  127. data/spec/api/account_api_spec.rb +46 -0
  128. data/spec/api/amazon_api_spec.rb +258 -0
  129. data/spec/api/apartments_api_spec.rb +98 -0
  130. data/spec/api/baidu_api_spec.rb +109 -0
  131. data/spec/api/bing_api_spec.rb +141 -0
  132. data/spec/api/chat_gpt_api_spec.rb +123 -0
  133. data/spec/api/depop_api_spec.rb +132 -0
  134. data/spec/api/duck_duck_go_api_spec.rb +162 -0
  135. data/spec/api/e_bay_api_spec.rb +222 -0
  136. data/spec/api/facebook_api_spec.rb +326 -0
  137. data/spec/api/google_api_spec.rb +649 -0
  138. data/spec/api/idealista_api_spec.rb +197 -0
  139. data/spec/api/immobiliare_api_spec.rb +174 -0
  140. data/spec/api/instagram_api_spec.rb +309 -0
  141. data/spec/api/leboncoin_api_spec.rb +184 -0
  142. data/spec/api/linked_in_api_spec.rb +197 -0
  143. data/spec/api/loop_net_api_spec.rb +127 -0
  144. data/spec/api/realtor_api_spec.rb +123 -0
  145. data/spec/api/reddit_api_spec.rb +331 -0
  146. data/spec/api/redfin_api_spec.rb +147 -0
  147. data/spec/api/tik_tok_api_spec.rb +413 -0
  148. data/spec/api/twitter_api_spec.rb +735 -0
  149. data/spec/api/vinted_api_spec.rb +169 -0
  150. data/spec/api/walmart_api_spec.rb +192 -0
  151. data/spec/api/web_api_spec.rb +136 -0
  152. data/spec/api/yahoo_api_spec.rb +137 -0
  153. data/spec/api/yandex_api_spec.rb +111 -0
  154. data/spec/api/you_tube_api_spec.rb +500 -0
  155. data/spec/api/zillow_api_spec.rb +150 -0
  156. data/spec/models/account_info_spec.rb +66 -0
  157. data/spec/models/billing_log_list_response_spec.rb +54 -0
  158. data/spec/models/billing_log_response_spec.rb +78 -0
  159. data/spec/models/filter_rule_create_spec.rb +66 -0
  160. data/spec/models/filter_rule_delivery_log_list_response_spec.rb +54 -0
  161. data/spec/models/filter_rule_delivery_log_response_spec.rb +114 -0
  162. data/spec/models/filter_rule_list_response_spec.rb +54 -0
  163. data/spec/models/filter_rule_response_spec.rb +102 -0
  164. data/spec/models/filter_rule_update_spec.rb +72 -0
  165. data/spec/models/filter_rule_validate_request_spec.rb +36 -0
  166. data/spec/models/filter_rule_validate_response_spec.rb +48 -0
  167. data/spec/models/http_validation_error_spec.rb +36 -0
  168. data/spec/models/portal_api_routers_v1_twitter_filter_rules_filter_rule_pricing_response_spec.rb +42 -0
  169. data/spec/models/stream_monitor_create_spec.rb +60 -0
  170. data/spec/models/stream_monitor_list_response_spec.rb +54 -0
  171. data/spec/models/stream_monitor_response_spec.rb +108 -0
  172. data/spec/models/stream_monitor_update_spec.rb +66 -0
  173. data/spec/models/subscription_info_spec.rb +102 -0
  174. data/spec/models/tweet_delivery_log_list_response_spec.rb +54 -0
  175. data/spec/models/tweet_delivery_log_response_spec.rb +114 -0
  176. data/spec/models/validation_error_loc_inner_spec.rb +21 -0
  177. data/spec/models/validation_error_spec.rb +48 -0
  178. data/spec/models/webhook_create_spec.rb +48 -0
  179. data/spec/models/webhook_list_item_spec.rb +66 -0
  180. data/spec/models/webhook_list_response_spec.rb +42 -0
  181. data/spec/models/webhook_response_spec.rb +60 -0
  182. data/spec/models/webhook_test_request_spec.rb +36 -0
  183. data/spec/models/webhook_test_response_spec.rb +54 -0
  184. data/spec/spec_helper.rb +111 -0
  185. metadata +324 -0
@@ -0,0 +1,390 @@
1
+ =begin
2
+ #ScrapeBadger API
3
+
4
+ #Unified credit-based scraping API. https://docs.scrapebadger.com
5
+
6
+ The version of the OpenAPI document: 0.1.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module ScrapeBadger
17
+ # Filter rule response. Per-poll billing — see ``GET /v1/twitter/filter-rules/pricing`` for the rates that apply globally to every rule.
18
+ class FilterRuleResponse
19
+ attr_accessor :id
20
+
21
+ attr_accessor :tag
22
+
23
+ attr_accessor :query
24
+
25
+ attr_accessor :interval_seconds
26
+
27
+ attr_accessor :max_results_per_poll
28
+
29
+ attr_accessor :status
30
+
31
+ attr_accessor :status_reason
32
+
33
+ attr_accessor :webhook_url
34
+
35
+ attr_accessor :webhook_secret_set
36
+
37
+ attr_accessor :total_credits_burned
38
+
39
+ attr_accessor :created_at
40
+
41
+ attr_accessor :updated_at
42
+
43
+ # Attribute mapping from ruby-style variable name to JSON key.
44
+ def self.attribute_map
45
+ {
46
+ :'id' => :'id',
47
+ :'tag' => :'tag',
48
+ :'query' => :'query',
49
+ :'interval_seconds' => :'interval_seconds',
50
+ :'max_results_per_poll' => :'max_results_per_poll',
51
+ :'status' => :'status',
52
+ :'status_reason' => :'status_reason',
53
+ :'webhook_url' => :'webhook_url',
54
+ :'webhook_secret_set' => :'webhook_secret_set',
55
+ :'total_credits_burned' => :'total_credits_burned',
56
+ :'created_at' => :'created_at',
57
+ :'updated_at' => :'updated_at'
58
+ }
59
+ end
60
+
61
+ # Returns all the JSON keys this model knows about
62
+ def self.acceptable_attributes
63
+ attribute_map.values
64
+ end
65
+
66
+ # Attribute type mapping.
67
+ def self.openapi_types
68
+ {
69
+ :'id' => :'String',
70
+ :'tag' => :'String',
71
+ :'query' => :'String',
72
+ :'interval_seconds' => :'Float',
73
+ :'max_results_per_poll' => :'Integer',
74
+ :'status' => :'String',
75
+ :'status_reason' => :'String',
76
+ :'webhook_url' => :'String',
77
+ :'webhook_secret_set' => :'Boolean',
78
+ :'total_credits_burned' => :'Float',
79
+ :'created_at' => :'Time',
80
+ :'updated_at' => :'Time'
81
+ }
82
+ end
83
+
84
+ # List of attributes with nullable: true
85
+ def self.openapi_nullable
86
+ Set.new([
87
+ :'status_reason',
88
+ :'webhook_url',
89
+ ])
90
+ end
91
+
92
+ # Initializes the object
93
+ # @param [Hash] attributes Model attributes in the form of hash
94
+ def initialize(attributes = {})
95
+ if (!attributes.is_a?(Hash))
96
+ fail ArgumentError, "The input argument (attributes) must be a hash in `ScrapeBadger::FilterRuleResponse` initialize method"
97
+ end
98
+
99
+ # check to see if the attribute exists and convert string to symbol for hash key
100
+ attributes = attributes.each_with_object({}) { |(k, v), h|
101
+ if (!self.class.attribute_map.key?(k.to_sym))
102
+ fail ArgumentError, "`#{k}` is not a valid attribute in `ScrapeBadger::FilterRuleResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
103
+ end
104
+ h[k.to_sym] = v
105
+ }
106
+
107
+ if attributes.key?(:'id')
108
+ self.id = attributes[:'id']
109
+ else
110
+ self.id = nil
111
+ end
112
+
113
+ if attributes.key?(:'tag')
114
+ self.tag = attributes[:'tag']
115
+ else
116
+ self.tag = nil
117
+ end
118
+
119
+ if attributes.key?(:'query')
120
+ self.query = attributes[:'query']
121
+ else
122
+ self.query = nil
123
+ end
124
+
125
+ if attributes.key?(:'interval_seconds')
126
+ self.interval_seconds = attributes[:'interval_seconds']
127
+ else
128
+ self.interval_seconds = nil
129
+ end
130
+
131
+ if attributes.key?(:'max_results_per_poll')
132
+ self.max_results_per_poll = attributes[:'max_results_per_poll']
133
+ else
134
+ self.max_results_per_poll = nil
135
+ end
136
+
137
+ if attributes.key?(:'status')
138
+ self.status = attributes[:'status']
139
+ else
140
+ self.status = nil
141
+ end
142
+
143
+ if attributes.key?(:'status_reason')
144
+ self.status_reason = attributes[:'status_reason']
145
+ else
146
+ self.status_reason = nil
147
+ end
148
+
149
+ if attributes.key?(:'webhook_url')
150
+ self.webhook_url = attributes[:'webhook_url']
151
+ else
152
+ self.webhook_url = nil
153
+ end
154
+
155
+ if attributes.key?(:'webhook_secret_set')
156
+ self.webhook_secret_set = attributes[:'webhook_secret_set']
157
+ else
158
+ self.webhook_secret_set = nil
159
+ end
160
+
161
+ if attributes.key?(:'total_credits_burned')
162
+ self.total_credits_burned = attributes[:'total_credits_burned']
163
+ else
164
+ self.total_credits_burned = nil
165
+ end
166
+
167
+ if attributes.key?(:'created_at')
168
+ self.created_at = attributes[:'created_at']
169
+ else
170
+ self.created_at = nil
171
+ end
172
+
173
+ if attributes.key?(:'updated_at')
174
+ self.updated_at = attributes[:'updated_at']
175
+ else
176
+ self.updated_at = nil
177
+ end
178
+ end
179
+
180
+ # Show invalid properties with the reasons. Usually used together with valid?
181
+ # @return Array for valid properties with the reasons
182
+ def list_invalid_properties
183
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
184
+ invalid_properties = Array.new
185
+ if @id.nil?
186
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
187
+ end
188
+
189
+ if @tag.nil?
190
+ invalid_properties.push('invalid value for "tag", tag cannot be nil.')
191
+ end
192
+
193
+ if @query.nil?
194
+ invalid_properties.push('invalid value for "query", query cannot be nil.')
195
+ end
196
+
197
+ if @interval_seconds.nil?
198
+ invalid_properties.push('invalid value for "interval_seconds", interval_seconds cannot be nil.')
199
+ end
200
+
201
+ if @max_results_per_poll.nil?
202
+ invalid_properties.push('invalid value for "max_results_per_poll", max_results_per_poll cannot be nil.')
203
+ end
204
+
205
+ if @status.nil?
206
+ invalid_properties.push('invalid value for "status", status cannot be nil.')
207
+ end
208
+
209
+ if @webhook_secret_set.nil?
210
+ invalid_properties.push('invalid value for "webhook_secret_set", webhook_secret_set cannot be nil.')
211
+ end
212
+
213
+ if @total_credits_burned.nil?
214
+ invalid_properties.push('invalid value for "total_credits_burned", total_credits_burned cannot be nil.')
215
+ end
216
+
217
+ if @created_at.nil?
218
+ invalid_properties.push('invalid value for "created_at", created_at cannot be nil.')
219
+ end
220
+
221
+ if @updated_at.nil?
222
+ invalid_properties.push('invalid value for "updated_at", updated_at cannot be nil.')
223
+ end
224
+
225
+ invalid_properties
226
+ end
227
+
228
+ # Check to see if the all the properties in the model are valid
229
+ # @return true if the model is valid
230
+ def valid?
231
+ warn '[DEPRECATED] the `valid?` method is obsolete'
232
+ return false if @id.nil?
233
+ return false if @tag.nil?
234
+ return false if @query.nil?
235
+ return false if @interval_seconds.nil?
236
+ return false if @max_results_per_poll.nil?
237
+ return false if @status.nil?
238
+ return false if @webhook_secret_set.nil?
239
+ return false if @total_credits_burned.nil?
240
+ return false if @created_at.nil?
241
+ return false if @updated_at.nil?
242
+ true
243
+ end
244
+
245
+ # Checks equality by comparing each attribute.
246
+ # @param [Object] Object to be compared
247
+ def ==(o)
248
+ return true if self.equal?(o)
249
+ self.class == o.class &&
250
+ id == o.id &&
251
+ tag == o.tag &&
252
+ query == o.query &&
253
+ interval_seconds == o.interval_seconds &&
254
+ max_results_per_poll == o.max_results_per_poll &&
255
+ status == o.status &&
256
+ status_reason == o.status_reason &&
257
+ webhook_url == o.webhook_url &&
258
+ webhook_secret_set == o.webhook_secret_set &&
259
+ total_credits_burned == o.total_credits_burned &&
260
+ created_at == o.created_at &&
261
+ updated_at == o.updated_at
262
+ end
263
+
264
+ # @see the `==` method
265
+ # @param [Object] Object to be compared
266
+ def eql?(o)
267
+ self == o
268
+ end
269
+
270
+ # Calculates hash code according to all attributes.
271
+ # @return [Integer] Hash code
272
+ def hash
273
+ [id, tag, query, interval_seconds, max_results_per_poll, status, status_reason, webhook_url, webhook_secret_set, total_credits_burned, created_at, updated_at].hash
274
+ end
275
+
276
+ # Builds the object from hash
277
+ # @param [Hash] attributes Model attributes in the form of hash
278
+ # @return [Object] Returns the model itself
279
+ def self.build_from_hash(attributes)
280
+ return nil unless attributes.is_a?(Hash)
281
+ attributes = attributes.transform_keys(&:to_sym)
282
+ transformed_hash = {}
283
+ openapi_types.each_pair do |key, type|
284
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
285
+ transformed_hash["#{key}"] = nil
286
+ elsif type =~ /\AArray<(.*)>/i
287
+ # check to ensure the input is an array given that the attribute
288
+ # is documented as an array but the input is not
289
+ if attributes[attribute_map[key]].is_a?(Array)
290
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
291
+ end
292
+ elsif !attributes[attribute_map[key]].nil?
293
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
294
+ end
295
+ end
296
+ new(transformed_hash)
297
+ end
298
+
299
+ # Deserializes the data based on type
300
+ # @param string type Data type
301
+ # @param string value Value to be deserialized
302
+ # @return [Object] Deserialized data
303
+ def self._deserialize(type, value)
304
+ case type.to_sym
305
+ when :Time
306
+ Time.parse(value)
307
+ when :Date
308
+ Date.parse(value)
309
+ when :String
310
+ value.to_s
311
+ when :Integer
312
+ value.to_i
313
+ when :Float
314
+ value.to_f
315
+ when :Boolean
316
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
317
+ true
318
+ else
319
+ false
320
+ end
321
+ when :Object
322
+ # generic object (usually a Hash), return directly
323
+ value
324
+ when /\AArray<(?<inner_type>.+)>\z/
325
+ inner_type = Regexp.last_match[:inner_type]
326
+ value.map { |v| _deserialize(inner_type, v) }
327
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
328
+ k_type = Regexp.last_match[:k_type]
329
+ v_type = Regexp.last_match[:v_type]
330
+ {}.tap do |hash|
331
+ value.each do |k, v|
332
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
333
+ end
334
+ end
335
+ else # model
336
+ # models (e.g. Pet) or oneOf
337
+ klass = ScrapeBadger.const_get(type)
338
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
339
+ end
340
+ end
341
+
342
+ # Returns the string representation of the object
343
+ # @return [String] String presentation of the object
344
+ def to_s
345
+ to_hash.to_s
346
+ end
347
+
348
+ # to_body is an alias to to_hash (backward compatibility)
349
+ # @return [Hash] Returns the object in the form of hash
350
+ def to_body
351
+ to_hash
352
+ end
353
+
354
+ # Returns the object in the form of hash
355
+ # @return [Hash] Returns the object in the form of hash
356
+ def to_hash
357
+ hash = {}
358
+ self.class.attribute_map.each_pair do |attr, param|
359
+ value = self.send(attr)
360
+ if value.nil?
361
+ is_nullable = self.class.openapi_nullable.include?(attr)
362
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
363
+ end
364
+
365
+ hash[param] = _to_hash(value)
366
+ end
367
+ hash
368
+ end
369
+
370
+ # Outputs non-array value in the form of hash
371
+ # For object, use to_hash. Otherwise, just return the value
372
+ # @param [Object] value Any valid value
373
+ # @return [Hash] Returns the value in the form of hash
374
+ def _to_hash(value)
375
+ if value.is_a?(Array)
376
+ value.compact.map { |v| _to_hash(v) }
377
+ elsif value.is_a?(Hash)
378
+ {}.tap do |hash|
379
+ value.each { |k, v| hash[k] = _to_hash(v) }
380
+ end
381
+ elsif value.respond_to? :to_hash
382
+ value.to_hash
383
+ else
384
+ value
385
+ end
386
+ end
387
+
388
+ end
389
+
390
+ end