wallee-ruby-sdk 0.0.0 → 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 (293) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +31 -0
  3. data/lib/wallee-ruby-sdk/version.rb +1 -1
  4. data/lib/wallee.rb +332 -0
  5. data/lib/wallee/api_client.rb +403 -0
  6. data/lib/wallee/api_error.rb +47 -0
  7. data/lib/wallee/configuration.rb +144 -0
  8. data/lib/wallee/models/account.rb +298 -0
  9. data/lib/wallee/models/account_create.rb +308 -0
  10. data/lib/wallee/models/account_state.rb +47 -0
  11. data/lib/wallee/models/account_type.rb +44 -0
  12. data/lib/wallee/models/account_update.rb +308 -0
  13. data/lib/wallee/models/address.rb +388 -0
  14. data/lib/wallee/models/address_create.rb +388 -0
  15. data/lib/wallee/models/application_user.rb +268 -0
  16. data/lib/wallee/models/application_user_create.rb +283 -0
  17. data/lib/wallee/models/application_user_create_with_mac_key.rb +278 -0
  18. data/lib/wallee/models/application_user_update.rb +278 -0
  19. data/lib/wallee/models/attachment_resource.rb +210 -0
  20. data/lib/wallee/models/charge.rb +318 -0
  21. data/lib/wallee/models/charge_attempt.rb +420 -0
  22. data/lib/wallee/models/charge_attempt_environment.rb +43 -0
  23. data/lib/wallee/models/charge_attempt_state.rb +44 -0
  24. data/lib/wallee/models/charge_flow.rb +270 -0
  25. data/lib/wallee/models/charge_flow_level.rb +318 -0
  26. data/lib/wallee/models/charge_flow_level_configuration.rb +288 -0
  27. data/lib/wallee/models/charge_flow_level_configuration_type.rb +222 -0
  28. data/lib/wallee/models/charge_flow_level_state.rb +44 -0
  29. data/lib/wallee/models/charge_state.rb +44 -0
  30. data/lib/wallee/models/charge_type.rb +44 -0
  31. data/lib/wallee/models/client_error.rb +238 -0
  32. data/lib/wallee/models/client_error_type.rb +44 -0
  33. data/lib/wallee/models/condition.rb +258 -0
  34. data/lib/wallee/models/condition_type.rb +222 -0
  35. data/lib/wallee/models/connector_invocation.rb +278 -0
  36. data/lib/wallee/models/connector_invocation_stage.rb +45 -0
  37. data/lib/wallee/models/creation_entity_state.rb +46 -0
  38. data/lib/wallee/models/criteria_operator.rb +50 -0
  39. data/lib/wallee/models/customers_presence.rb +44 -0
  40. data/lib/wallee/models/data_collection_type.rb +43 -0
  41. data/lib/wallee/models/database_translated_string.rb +222 -0
  42. data/lib/wallee/models/database_translated_string_create.rb +222 -0
  43. data/lib/wallee/models/database_translated_string_item.rb +218 -0
  44. data/lib/wallee/models/database_translated_string_item_create.rb +223 -0
  45. data/lib/wallee/models/delivery_indication.rb +318 -0
  46. data/lib/wallee/models/delivery_indication_decision_reason.rb +222 -0
  47. data/lib/wallee/models/delivery_indication_state.rb +45 -0
  48. data/lib/wallee/models/document_template.rb +278 -0
  49. data/lib/wallee/models/document_template_type.rb +242 -0
  50. data/lib/wallee/models/email_sender.rb +278 -0
  51. data/lib/wallee/models/email_sender_type.rb +232 -0
  52. data/lib/wallee/models/email_template.rb +324 -0
  53. data/lib/wallee/models/email_template_type.rb +288 -0
  54. data/lib/wallee/models/entity_query.rb +240 -0
  55. data/lib/wallee/models/entity_query_filter.rb +245 -0
  56. data/lib/wallee/models/entity_query_filter_type.rb +44 -0
  57. data/lib/wallee/models/entity_query_order_by.rb +208 -0
  58. data/lib/wallee/models/entity_query_order_by_type.rb +43 -0
  59. data/lib/wallee/models/entity_reference.rb +188 -0
  60. data/lib/wallee/models/failure_category.rb +46 -0
  61. data/lib/wallee/models/failure_reason.rb +244 -0
  62. data/lib/wallee/models/feature.rb +274 -0
  63. data/lib/wallee/models/gender.rb +43 -0
  64. data/lib/wallee/models/human_user.rb +318 -0
  65. data/lib/wallee/models/human_user_create.rb +328 -0
  66. data/lib/wallee/models/human_user_update.rb +328 -0
  67. data/lib/wallee/models/installment_calculated_plan.rb +242 -0
  68. data/lib/wallee/models/installment_calculated_slice.rb +220 -0
  69. data/lib/wallee/models/installment_payment.rb +280 -0
  70. data/lib/wallee/models/installment_payment_slice.rb +300 -0
  71. data/lib/wallee/models/installment_payment_slice_state.rb +48 -0
  72. data/lib/wallee/models/installment_payment_state.rb +49 -0
  73. data/lib/wallee/models/installment_plan_configuration.rb +362 -0
  74. data/lib/wallee/models/installment_plan_slice_configuration.rb +288 -0
  75. data/lib/wallee/models/label.rb +238 -0
  76. data/lib/wallee/models/label_descriptor.rb +274 -0
  77. data/lib/wallee/models/label_descriptor_category.rb +43 -0
  78. data/lib/wallee/models/label_descriptor_group.rb +232 -0
  79. data/lib/wallee/models/label_descriptor_type.rb +222 -0
  80. data/lib/wallee/models/legal_organization_form.rb +242 -0
  81. data/lib/wallee/models/line_item.rb +342 -0
  82. data/lib/wallee/models/line_item_attribute.rb +208 -0
  83. data/lib/wallee/models/line_item_attribute_create.rb +208 -0
  84. data/lib/wallee/models/line_item_create.rb +367 -0
  85. data/lib/wallee/models/line_item_reduction.rb +218 -0
  86. data/lib/wallee/models/line_item_reduction_create.rb +233 -0
  87. data/lib/wallee/models/line_item_type.rb +45 -0
  88. data/lib/wallee/models/localized_string.rb +218 -0
  89. data/lib/wallee/models/manual_task.rb +290 -0
  90. data/lib/wallee/models/manual_task_action.rb +230 -0
  91. data/lib/wallee/models/manual_task_action_style.rb +44 -0
  92. data/lib/wallee/models/manual_task_state.rb +44 -0
  93. data/lib/wallee/models/manual_task_type.rb +234 -0
  94. data/lib/wallee/models/one_click_payment_mode.rb +44 -0
  95. data/lib/wallee/models/payment_connector.rb +306 -0
  96. data/lib/wallee/models/payment_connector_configuration.rb +322 -0
  97. data/lib/wallee/models/payment_connector_feature.rb +218 -0
  98. data/lib/wallee/models/payment_method.rb +256 -0
  99. data/lib/wallee/models/payment_method_brand.rb +252 -0
  100. data/lib/wallee/models/payment_method_configuration.rb +328 -0
  101. data/lib/wallee/models/payment_primary_risk_taker.rb +44 -0
  102. data/lib/wallee/models/payment_processor.rb +278 -0
  103. data/lib/wallee/models/payment_processor_configuration.rb +258 -0
  104. data/lib/wallee/models/permission.rb +286 -0
  105. data/lib/wallee/models/persistable_currency_amount.rb +208 -0
  106. data/lib/wallee/models/persistable_currency_amount_update.rb +208 -0
  107. data/lib/wallee/models/product_fee_type.rb +44 -0
  108. data/lib/wallee/models/product_metered_fee.rb +278 -0
  109. data/lib/wallee/models/product_metered_fee_update.rb +288 -0
  110. data/lib/wallee/models/product_metered_tier_fee.rb +240 -0
  111. data/lib/wallee/models/product_metered_tier_fee_update.rb +250 -0
  112. data/lib/wallee/models/product_metered_tier_pricing.rb +43 -0
  113. data/lib/wallee/models/product_period_fee.rb +280 -0
  114. data/lib/wallee/models/product_period_fee_update.rb +290 -0
  115. data/lib/wallee/models/product_setup_fee.rb +294 -0
  116. data/lib/wallee/models/product_setup_fee_update.rb +304 -0
  117. data/lib/wallee/models/refund.rb +450 -0
  118. data/lib/wallee/models/refund_create.rb +470 -0
  119. data/lib/wallee/models/refund_state.rb +46 -0
  120. data/lib/wallee/models/refund_type.rb +45 -0
  121. data/lib/wallee/models/rendered_document.rb +230 -0
  122. data/lib/wallee/models/resource_path.rb +258 -0
  123. data/lib/wallee/models/resource_state.rb +44 -0
  124. data/lib/wallee/models/rest_country.rb +240 -0
  125. data/lib/wallee/models/rest_country_state.rb +228 -0
  126. data/lib/wallee/models/rest_currency.rb +218 -0
  127. data/lib/wallee/models/rest_language.rb +248 -0
  128. data/lib/wallee/models/scope.rb +302 -0
  129. data/lib/wallee/models/server_error.rb +218 -0
  130. data/lib/wallee/models/space.rb +330 -0
  131. data/lib/wallee/models/space_address.rb +318 -0
  132. data/lib/wallee/models/space_address_setter.rb +318 -0
  133. data/lib/wallee/models/space_create.rb +350 -0
  134. data/lib/wallee/models/space_reference.rb +258 -0
  135. data/lib/wallee/models/space_reference_state.rb +46 -0
  136. data/lib/wallee/models/space_update.rb +340 -0
  137. data/lib/wallee/models/space_view.rb +258 -0
  138. data/lib/wallee/models/static_value.rb +234 -0
  139. data/lib/wallee/models/subscriber.rb +332 -0
  140. data/lib/wallee/models/subscriber_active.rb +342 -0
  141. data/lib/wallee/models/subscriber_create.rb +347 -0
  142. data/lib/wallee/models/subscriber_update.rb +342 -0
  143. data/lib/wallee/models/subscription.rb +338 -0
  144. data/lib/wallee/models/subscription_change_request.rb +250 -0
  145. data/lib/wallee/models/subscription_charge.rb +390 -0
  146. data/lib/wallee/models/subscription_charge_create.rb +405 -0
  147. data/lib/wallee/models/subscription_charge_processing_type.rb +43 -0
  148. data/lib/wallee/models/subscription_charge_state.rb +46 -0
  149. data/lib/wallee/models/subscription_charge_type.rb +43 -0
  150. data/lib/wallee/models/subscription_create_request.rb +245 -0
  151. data/lib/wallee/models/subscription_ledger_entry.rb +350 -0
  152. data/lib/wallee/models/subscription_ledger_entry_create.rb +375 -0
  153. data/lib/wallee/models/subscription_ledger_entry_state.rb +44 -0
  154. data/lib/wallee/models/subscription_metric.rb +268 -0
  155. data/lib/wallee/models/subscription_metric_active.rb +278 -0
  156. data/lib/wallee/models/subscription_metric_create.rb +288 -0
  157. data/lib/wallee/models/subscription_metric_type.rb +232 -0
  158. data/lib/wallee/models/subscription_metric_update.rb +278 -0
  159. data/lib/wallee/models/subscription_metric_usage_report.rb +298 -0
  160. data/lib/wallee/models/subscription_metric_usage_report_create.rb +318 -0
  161. data/lib/wallee/models/subscription_pending.rb +348 -0
  162. data/lib/wallee/models/subscription_period_bill.rb +298 -0
  163. data/lib/wallee/models/subscription_period_bill_state.rb +43 -0
  164. data/lib/wallee/models/subscription_product.rb +300 -0
  165. data/lib/wallee/models/subscription_product_active.rb +310 -0
  166. data/lib/wallee/models/subscription_product_component.rb +298 -0
  167. data/lib/wallee/models/subscription_product_component_group.rb +258 -0
  168. data/lib/wallee/models/subscription_product_component_group_update.rb +268 -0
  169. data/lib/wallee/models/subscription_product_component_reference.rb +258 -0
  170. data/lib/wallee/models/subscription_product_component_reference_state.rb +45 -0
  171. data/lib/wallee/models/subscription_product_component_update.rb +308 -0
  172. data/lib/wallee/models/subscription_product_create.rb +315 -0
  173. data/lib/wallee/models/subscription_product_retirement.rb +258 -0
  174. data/lib/wallee/models/subscription_product_retirement_create.rb +263 -0
  175. data/lib/wallee/models/subscription_product_state.rb +46 -0
  176. data/lib/wallee/models/subscription_product_version.rb +390 -0
  177. data/lib/wallee/models/subscription_product_version_pending.rb +310 -0
  178. data/lib/wallee/models/subscription_product_version_retirement.rb +258 -0
  179. data/lib/wallee/models/subscription_product_version_retirement_create.rb +263 -0
  180. data/lib/wallee/models/subscription_product_version_state.rb +46 -0
  181. data/lib/wallee/models/subscription_state.rb +48 -0
  182. data/lib/wallee/models/subscription_suspension.rb +328 -0
  183. data/lib/wallee/models/subscription_suspension_action.rb +43 -0
  184. data/lib/wallee/models/subscription_suspension_create.rb +343 -0
  185. data/lib/wallee/models/subscription_suspension_reason.rb +44 -0
  186. data/lib/wallee/models/subscription_suspension_running.rb +328 -0
  187. data/lib/wallee/models/subscription_suspension_state.rb +43 -0
  188. data/lib/wallee/models/subscription_update.rb +348 -0
  189. data/lib/wallee/models/subscription_version.rb +370 -0
  190. data/lib/wallee/models/subscription_version_state.rb +47 -0
  191. data/lib/wallee/models/tax.rb +208 -0
  192. data/lib/wallee/models/tax_class.rb +258 -0
  193. data/lib/wallee/models/tax_create.rb +218 -0
  194. data/lib/wallee/models/tenant_database.rb +218 -0
  195. data/lib/wallee/models/token.rb +308 -0
  196. data/lib/wallee/models/token_create.rb +323 -0
  197. data/lib/wallee/models/token_update.rb +318 -0
  198. data/lib/wallee/models/token_version.rb +360 -0
  199. data/lib/wallee/models/token_version_state.rb +44 -0
  200. data/lib/wallee/models/transaction.rb +626 -0
  201. data/lib/wallee/models/transaction_aware_entity.rb +218 -0
  202. data/lib/wallee/models/transaction_completion.rb +390 -0
  203. data/lib/wallee/models/transaction_completion_mode.rb +44 -0
  204. data/lib/wallee/models/transaction_completion_state.rb +45 -0
  205. data/lib/wallee/models/transaction_create.rb +646 -0
  206. data/lib/wallee/models/transaction_group.rb +268 -0
  207. data/lib/wallee/models/transaction_group_state.rb +44 -0
  208. data/lib/wallee/models/transaction_invoice.rb +380 -0
  209. data/lib/wallee/models/transaction_invoice_replacement.rb +250 -0
  210. data/lib/wallee/models/transaction_invoice_state.rb +48 -0
  211. data/lib/wallee/models/transaction_line_item_update_request.rb +215 -0
  212. data/lib/wallee/models/transaction_line_item_version.rb +320 -0
  213. data/lib/wallee/models/transaction_pending.rb +636 -0
  214. data/lib/wallee/models/transaction_state.rb +51 -0
  215. data/lib/wallee/models/transaction_user_interface_type.rb +44 -0
  216. data/lib/wallee/models/transaction_void.rb +380 -0
  217. data/lib/wallee/models/transaction_void_mode.rb +43 -0
  218. data/lib/wallee/models/transaction_void_state.rb +45 -0
  219. data/lib/wallee/models/user.rb +248 -0
  220. data/lib/wallee/models/user_type.rb +45 -0
  221. data/lib/wallee/models/webhook_identity.rb +248 -0
  222. data/lib/wallee/models/webhook_listener.rb +300 -0
  223. data/lib/wallee/models/webhook_listener_create.rb +330 -0
  224. data/lib/wallee/models/webhook_listener_entity.rb +220 -0
  225. data/lib/wallee/models/webhook_listener_update.rb +310 -0
  226. data/lib/wallee/models/webhook_url.rb +258 -0
  227. data/lib/wallee/models/webhook_url_create.rb +273 -0
  228. data/lib/wallee/models/webhook_url_update.rb +268 -0
  229. data/lib/wallee/services/account_service_api.rb +372 -0
  230. data/lib/wallee/services/application_user_service_api.rb +372 -0
  231. data/lib/wallee/services/charge_attempt_service_api.rb +217 -0
  232. data/lib/wallee/services/charge_flow_level_service_api.rb +280 -0
  233. data/lib/wallee/services/charge_flow_service_api.rb +352 -0
  234. data/lib/wallee/services/condition_type_service_api.rb +143 -0
  235. data/lib/wallee/services/country_service_api.rb +85 -0
  236. data/lib/wallee/services/country_state_service_api.rb +143 -0
  237. data/lib/wallee/services/currency_service_api.rb +85 -0
  238. data/lib/wallee/services/delivery_indication_service_api.rb +341 -0
  239. data/lib/wallee/services/document_template_service_api.rb +217 -0
  240. data/lib/wallee/services/document_template_type_service_api.rb +143 -0
  241. data/lib/wallee/services/email_sender_service_api.rb +219 -0
  242. data/lib/wallee/services/email_sender_type_service_api.rb +143 -0
  243. data/lib/wallee/services/email_template_service_api.rb +217 -0
  244. data/lib/wallee/services/email_template_type_service_api.rb +143 -0
  245. data/lib/wallee/services/human_user_service_api.rb +372 -0
  246. data/lib/wallee/services/installment_payment_service_api.rb +287 -0
  247. data/lib/wallee/services/installment_payment_slice_service_api.rb +219 -0
  248. data/lib/wallee/services/installment_plan_calculation_service_api.rb +95 -0
  249. data/lib/wallee/services/installment_plan_configuration_service_api.rb +219 -0
  250. data/lib/wallee/services/installment_plan_slice_configuration_service_api.rb +219 -0
  251. data/lib/wallee/services/label_description_group_service_api.rb +143 -0
  252. data/lib/wallee/services/label_description_service_api.rb +143 -0
  253. data/lib/wallee/services/language_service_api.rb +85 -0
  254. data/lib/wallee/services/manual_task_service_api.rb +217 -0
  255. data/lib/wallee/services/payment_connector_configuration_service_api.rb +217 -0
  256. data/lib/wallee/services/payment_connector_service_api.rb +143 -0
  257. data/lib/wallee/services/payment_method_configuration_service_api.rb +217 -0
  258. data/lib/wallee/services/payment_method_service_api.rb +143 -0
  259. data/lib/wallee/services/payment_processor_configuration_service_api.rb +217 -0
  260. data/lib/wallee/services/payment_processor_service_api.rb +143 -0
  261. data/lib/wallee/services/permission_service_api.rb +143 -0
  262. data/lib/wallee/services/refund_service_api.rb +468 -0
  263. data/lib/wallee/services/space_service_api.rb +372 -0
  264. data/lib/wallee/services/static_value_service_api.rb +143 -0
  265. data/lib/wallee/services/subscriber_service_api.rb +402 -0
  266. data/lib/wallee/services/subscription_charge_service_api.rb +342 -0
  267. data/lib/wallee/services/subscription_ledger_entry_service_api.rb +279 -0
  268. data/lib/wallee/services/subscription_metric_service_api.rb +402 -0
  269. data/lib/wallee/services/subscription_metric_usage_service_api.rb +279 -0
  270. data/lib/wallee/services/subscription_period_bill_service_api.rb +217 -0
  271. data/lib/wallee/services/subscription_product_component_group_service_api.rb +402 -0
  272. data/lib/wallee/services/subscription_product_component_service_api.rb +402 -0
  273. data/lib/wallee/services/subscription_product_fee_tier_service_api.rb +402 -0
  274. data/lib/wallee/services/subscription_product_metered_fee_service_api.rb +402 -0
  275. data/lib/wallee/services/subscription_product_period_fee_service_api.rb +402 -0
  276. data/lib/wallee/services/subscription_product_retirement_service_api.rb +279 -0
  277. data/lib/wallee/services/subscription_product_service_api.rb +341 -0
  278. data/lib/wallee/services/subscription_product_setup_fee_service_api.rb +402 -0
  279. data/lib/wallee/services/subscription_product_version_retirement_service_api.rb +279 -0
  280. data/lib/wallee/services/subscription_product_version_service_api.rb +404 -0
  281. data/lib/wallee/services/subscription_service_api.rb +608 -0
  282. data/lib/wallee/services/subscription_suspension_service_api.rb +342 -0
  283. data/lib/wallee/services/subscription_version_service_api.rb +217 -0
  284. data/lib/wallee/services/token_service_api.rb +402 -0
  285. data/lib/wallee/services/token_version_service_api.rb +280 -0
  286. data/lib/wallee/services/transaction_completion_service_api.rb +343 -0
  287. data/lib/wallee/services/transaction_invoice_service_api.rb +473 -0
  288. data/lib/wallee/services/transaction_service_api.rb +1263 -0
  289. data/lib/wallee/services/transaction_void_service_api.rb +343 -0
  290. data/lib/wallee/services/webhook_listener_service_api.rb +402 -0
  291. data/lib/wallee/services/webhook_url_service_api.rb +402 -0
  292. data/lib/wallee/version.rb +24 -0
  293. metadata +292 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cbe9f7f857f7734e0a52d01158ff7466c721aae4
4
- data.tar.gz: a610455c07d529af844f9b447754fae64774a963
3
+ metadata.gz: 7fcb886836a12d85bf011ac09a84061a03c16e85
4
+ data.tar.gz: 151bd9f10eb5bccc0d57b1126b465a54e63abecb
5
5
  SHA512:
6
- metadata.gz: 39d710d5293dd557eb16c1e88c96dab45fa492e8bc747ae743d8dc3d0436e42368f6594851b922bb2754c1678fe60c51c61aaa5b56594e365ff1715d38e721d9
7
- data.tar.gz: f290e667be199feb62e58de08c3256f69090523fccfa468ec1264679fb5a60f9e2f842a673c61aba6a9744e486ec23c109afedc646d1b6e1cff11e3354c637a9
6
+ metadata.gz: 5dfdfd1d31ad074fff5dd3f3ca59b52ebf3068464709d0e2d21f81b82e86de0166f17bb849c3e4af0800bc8505052e25891008a876dde8c66a5df788f7949976
7
+ data.tar.gz: 7f80d403dac01a0a6b8e35966e622ee5a44d904f56b49183f777ebd151b5c879d328a7e2bbfd1d0eae024dc887b30ce52c9acbfe3ba8c53a704316ed5f208cd5
data/Gemfile.lock ADDED
@@ -0,0 +1,31 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ wallee-ruby-sdk (1.0.0)
5
+ json (~> 1.8, >= 1.8.3)
6
+ typhoeus (~> 1.0, >= 1.0.1)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ ethon (0.10.1)
12
+ ffi (>= 1.3.0)
13
+ ffi (1.9.18)
14
+ json (1.8.6)
15
+ power_assert (1.0.2)
16
+ rake (12.0.0)
17
+ test-unit (3.2.5)
18
+ power_assert
19
+ typhoeus (1.1.2)
20
+ ethon (>= 0.9.0)
21
+
22
+ PLATFORMS
23
+ ruby
24
+
25
+ DEPENDENCIES
26
+ rake (~> 12.0.0)
27
+ test-unit (~> 3.2.5)
28
+ wallee-ruby-sdk!
29
+
30
+ BUNDLED WITH
31
+ 1.15.1
@@ -20,5 +20,5 @@ limitations under the License.
20
20
  =end
21
21
 
22
22
  module Wallee
23
- VERSION = "0.0.0"
23
+ VERSION = "1.0.0"
24
24
  end
data/lib/wallee.rb ADDED
@@ -0,0 +1,332 @@
1
+ =begin
2
+ Wallee API: 1.0.0
3
+
4
+ The wallee API allows an easy interaction with the wallee web service.
5
+
6
+
7
+
8
+ Licensed under the Apache License, Version 2.0 (the "License");
9
+ you may not use this file except in compliance with the License.
10
+ You may obtain a copy of the License at
11
+
12
+ http://www.apache.org/licenses/LICENSE-2.0
13
+
14
+ Unless required by applicable law or agreed to in writing, software
15
+ distributed under the License is distributed on an "AS IS" BASIS,
16
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ See the License for the specific language governing permissions and
18
+ limitations under the License.
19
+
20
+ =end
21
+
22
+ # Common files
23
+ require 'wallee/api_client'
24
+ require 'wallee/api_error'
25
+ require 'wallee/version'
26
+ require 'wallee/configuration'
27
+
28
+ # Models
29
+ require 'wallee/models/account'
30
+ require 'wallee/models/account_create'
31
+ require 'wallee/models/account_state'
32
+ require 'wallee/models/account_type'
33
+ require 'wallee/models/account_update'
34
+ require 'wallee/models/address'
35
+ require 'wallee/models/address_create'
36
+ require 'wallee/models/application_user'
37
+ require 'wallee/models/application_user_create'
38
+ require 'wallee/models/application_user_create_with_mac_key'
39
+ require 'wallee/models/application_user_update'
40
+ require 'wallee/models/attachment_resource'
41
+ require 'wallee/models/charge'
42
+ require 'wallee/models/charge_attempt'
43
+ require 'wallee/models/charge_attempt_environment'
44
+ require 'wallee/models/charge_attempt_state'
45
+ require 'wallee/models/charge_flow'
46
+ require 'wallee/models/charge_flow_level'
47
+ require 'wallee/models/charge_flow_level_configuration'
48
+ require 'wallee/models/charge_flow_level_configuration_type'
49
+ require 'wallee/models/charge_flow_level_state'
50
+ require 'wallee/models/charge_state'
51
+ require 'wallee/models/charge_type'
52
+ require 'wallee/models/client_error'
53
+ require 'wallee/models/client_error_type'
54
+ require 'wallee/models/condition'
55
+ require 'wallee/models/condition_type'
56
+ require 'wallee/models/connector_invocation'
57
+ require 'wallee/models/connector_invocation_stage'
58
+ require 'wallee/models/creation_entity_state'
59
+ require 'wallee/models/criteria_operator'
60
+ require 'wallee/models/customers_presence'
61
+ require 'wallee/models/data_collection_type'
62
+ require 'wallee/models/database_translated_string'
63
+ require 'wallee/models/database_translated_string_create'
64
+ require 'wallee/models/database_translated_string_item'
65
+ require 'wallee/models/database_translated_string_item_create'
66
+ require 'wallee/models/delivery_indication'
67
+ require 'wallee/models/delivery_indication_decision_reason'
68
+ require 'wallee/models/delivery_indication_state'
69
+ require 'wallee/models/document_template'
70
+ require 'wallee/models/document_template_type'
71
+ require 'wallee/models/email_sender'
72
+ require 'wallee/models/email_sender_type'
73
+ require 'wallee/models/email_template'
74
+ require 'wallee/models/email_template_type'
75
+ require 'wallee/models/entity_query'
76
+ require 'wallee/models/entity_query_filter'
77
+ require 'wallee/models/entity_query_filter_type'
78
+ require 'wallee/models/entity_query_order_by'
79
+ require 'wallee/models/entity_query_order_by_type'
80
+ require 'wallee/models/entity_reference'
81
+ require 'wallee/models/failure_category'
82
+ require 'wallee/models/failure_reason'
83
+ require 'wallee/models/feature'
84
+ require 'wallee/models/gender'
85
+ require 'wallee/models/human_user'
86
+ require 'wallee/models/human_user_create'
87
+ require 'wallee/models/human_user_update'
88
+ require 'wallee/models/installment_calculated_plan'
89
+ require 'wallee/models/installment_calculated_slice'
90
+ require 'wallee/models/installment_payment'
91
+ require 'wallee/models/installment_payment_slice'
92
+ require 'wallee/models/installment_payment_slice_state'
93
+ require 'wallee/models/installment_payment_state'
94
+ require 'wallee/models/installment_plan_configuration'
95
+ require 'wallee/models/installment_plan_slice_configuration'
96
+ require 'wallee/models/label'
97
+ require 'wallee/models/label_descriptor'
98
+ require 'wallee/models/label_descriptor_category'
99
+ require 'wallee/models/label_descriptor_group'
100
+ require 'wallee/models/label_descriptor_type'
101
+ require 'wallee/models/legal_organization_form'
102
+ require 'wallee/models/line_item'
103
+ require 'wallee/models/line_item_attribute'
104
+ require 'wallee/models/line_item_attribute_create'
105
+ require 'wallee/models/line_item_create'
106
+ require 'wallee/models/line_item_reduction'
107
+ require 'wallee/models/line_item_reduction_create'
108
+ require 'wallee/models/line_item_type'
109
+ require 'wallee/models/localized_string'
110
+ require 'wallee/models/manual_task'
111
+ require 'wallee/models/manual_task_action'
112
+ require 'wallee/models/manual_task_action_style'
113
+ require 'wallee/models/manual_task_state'
114
+ require 'wallee/models/manual_task_type'
115
+ require 'wallee/models/one_click_payment_mode'
116
+ require 'wallee/models/payment_connector'
117
+ require 'wallee/models/payment_connector_configuration'
118
+ require 'wallee/models/payment_connector_feature'
119
+ require 'wallee/models/payment_method'
120
+ require 'wallee/models/payment_method_brand'
121
+ require 'wallee/models/payment_method_configuration'
122
+ require 'wallee/models/payment_primary_risk_taker'
123
+ require 'wallee/models/payment_processor'
124
+ require 'wallee/models/payment_processor_configuration'
125
+ require 'wallee/models/permission'
126
+ require 'wallee/models/persistable_currency_amount'
127
+ require 'wallee/models/persistable_currency_amount_update'
128
+ require 'wallee/models/product_fee_type'
129
+ require 'wallee/models/product_metered_fee'
130
+ require 'wallee/models/product_metered_fee_update'
131
+ require 'wallee/models/product_metered_tier_fee'
132
+ require 'wallee/models/product_metered_tier_fee_update'
133
+ require 'wallee/models/product_metered_tier_pricing'
134
+ require 'wallee/models/product_period_fee'
135
+ require 'wallee/models/product_period_fee_update'
136
+ require 'wallee/models/product_setup_fee'
137
+ require 'wallee/models/product_setup_fee_update'
138
+ require 'wallee/models/refund'
139
+ require 'wallee/models/refund_create'
140
+ require 'wallee/models/refund_state'
141
+ require 'wallee/models/refund_type'
142
+ require 'wallee/models/rendered_document'
143
+ require 'wallee/models/resource_path'
144
+ require 'wallee/models/resource_state'
145
+ require 'wallee/models/rest_country'
146
+ require 'wallee/models/rest_country_state'
147
+ require 'wallee/models/rest_currency'
148
+ require 'wallee/models/rest_language'
149
+ require 'wallee/models/scope'
150
+ require 'wallee/models/server_error'
151
+ require 'wallee/models/space'
152
+ require 'wallee/models/space_address'
153
+ require 'wallee/models/space_address_setter'
154
+ require 'wallee/models/space_create'
155
+ require 'wallee/models/space_reference'
156
+ require 'wallee/models/space_reference_state'
157
+ require 'wallee/models/space_update'
158
+ require 'wallee/models/space_view'
159
+ require 'wallee/models/static_value'
160
+ require 'wallee/models/subscriber'
161
+ require 'wallee/models/subscriber_active'
162
+ require 'wallee/models/subscriber_create'
163
+ require 'wallee/models/subscriber_update'
164
+ require 'wallee/models/subscription'
165
+ require 'wallee/models/subscription_change_request'
166
+ require 'wallee/models/subscription_charge'
167
+ require 'wallee/models/subscription_charge_create'
168
+ require 'wallee/models/subscription_charge_processing_type'
169
+ require 'wallee/models/subscription_charge_state'
170
+ require 'wallee/models/subscription_charge_type'
171
+ require 'wallee/models/subscription_create_request'
172
+ require 'wallee/models/subscription_ledger_entry'
173
+ require 'wallee/models/subscription_ledger_entry_create'
174
+ require 'wallee/models/subscription_ledger_entry_state'
175
+ require 'wallee/models/subscription_metric'
176
+ require 'wallee/models/subscription_metric_active'
177
+ require 'wallee/models/subscription_metric_create'
178
+ require 'wallee/models/subscription_metric_type'
179
+ require 'wallee/models/subscription_metric_update'
180
+ require 'wallee/models/subscription_metric_usage_report'
181
+ require 'wallee/models/subscription_metric_usage_report_create'
182
+ require 'wallee/models/subscription_pending'
183
+ require 'wallee/models/subscription_period_bill'
184
+ require 'wallee/models/subscription_period_bill_state'
185
+ require 'wallee/models/subscription_product'
186
+ require 'wallee/models/subscription_product_active'
187
+ require 'wallee/models/subscription_product_component'
188
+ require 'wallee/models/subscription_product_component_group'
189
+ require 'wallee/models/subscription_product_component_group_update'
190
+ require 'wallee/models/subscription_product_component_reference'
191
+ require 'wallee/models/subscription_product_component_reference_state'
192
+ require 'wallee/models/subscription_product_component_update'
193
+ require 'wallee/models/subscription_product_create'
194
+ require 'wallee/models/subscription_product_retirement'
195
+ require 'wallee/models/subscription_product_retirement_create'
196
+ require 'wallee/models/subscription_product_state'
197
+ require 'wallee/models/subscription_product_version'
198
+ require 'wallee/models/subscription_product_version_pending'
199
+ require 'wallee/models/subscription_product_version_retirement'
200
+ require 'wallee/models/subscription_product_version_retirement_create'
201
+ require 'wallee/models/subscription_product_version_state'
202
+ require 'wallee/models/subscription_state'
203
+ require 'wallee/models/subscription_suspension'
204
+ require 'wallee/models/subscription_suspension_action'
205
+ require 'wallee/models/subscription_suspension_create'
206
+ require 'wallee/models/subscription_suspension_reason'
207
+ require 'wallee/models/subscription_suspension_running'
208
+ require 'wallee/models/subscription_suspension_state'
209
+ require 'wallee/models/subscription_update'
210
+ require 'wallee/models/subscription_version'
211
+ require 'wallee/models/subscription_version_state'
212
+ require 'wallee/models/tax'
213
+ require 'wallee/models/tax_class'
214
+ require 'wallee/models/tax_create'
215
+ require 'wallee/models/tenant_database'
216
+ require 'wallee/models/token'
217
+ require 'wallee/models/token_create'
218
+ require 'wallee/models/token_update'
219
+ require 'wallee/models/token_version'
220
+ require 'wallee/models/token_version_state'
221
+ require 'wallee/models/transaction'
222
+ require 'wallee/models/transaction_aware_entity'
223
+ require 'wallee/models/transaction_completion'
224
+ require 'wallee/models/transaction_completion_mode'
225
+ require 'wallee/models/transaction_completion_state'
226
+ require 'wallee/models/transaction_create'
227
+ require 'wallee/models/transaction_group'
228
+ require 'wallee/models/transaction_group_state'
229
+ require 'wallee/models/transaction_invoice'
230
+ require 'wallee/models/transaction_invoice_replacement'
231
+ require 'wallee/models/transaction_invoice_state'
232
+ require 'wallee/models/transaction_line_item_update_request'
233
+ require 'wallee/models/transaction_line_item_version'
234
+ require 'wallee/models/transaction_pending'
235
+ require 'wallee/models/transaction_state'
236
+ require 'wallee/models/transaction_user_interface_type'
237
+ require 'wallee/models/transaction_void'
238
+ require 'wallee/models/transaction_void_mode'
239
+ require 'wallee/models/transaction_void_state'
240
+ require 'wallee/models/user'
241
+ require 'wallee/models/user_type'
242
+ require 'wallee/models/webhook_identity'
243
+ require 'wallee/models/webhook_listener'
244
+ require 'wallee/models/webhook_listener_create'
245
+ require 'wallee/models/webhook_listener_entity'
246
+ require 'wallee/models/webhook_listener_update'
247
+ require 'wallee/models/webhook_url'
248
+ require 'wallee/models/webhook_url_create'
249
+ require 'wallee/models/webhook_url_update'
250
+
251
+ # APIs
252
+ require 'wallee/services/account_service_api'
253
+ require 'wallee/services/application_user_service_api'
254
+ require 'wallee/services/charge_attempt_service_api'
255
+ require 'wallee/services/charge_flow_level_service_api'
256
+ require 'wallee/services/charge_flow_service_api'
257
+ require 'wallee/services/condition_type_service_api'
258
+ require 'wallee/services/country_service_api'
259
+ require 'wallee/services/country_state_service_api'
260
+ require 'wallee/services/currency_service_api'
261
+ require 'wallee/services/delivery_indication_service_api'
262
+ require 'wallee/services/document_template_service_api'
263
+ require 'wallee/services/document_template_type_service_api'
264
+ require 'wallee/services/email_sender_service_api'
265
+ require 'wallee/services/email_sender_type_service_api'
266
+ require 'wallee/services/email_template_service_api'
267
+ require 'wallee/services/email_template_type_service_api'
268
+ require 'wallee/services/human_user_service_api'
269
+ require 'wallee/services/installment_payment_service_api'
270
+ require 'wallee/services/installment_payment_slice_service_api'
271
+ require 'wallee/services/installment_plan_calculation_service_api'
272
+ require 'wallee/services/installment_plan_configuration_service_api'
273
+ require 'wallee/services/installment_plan_slice_configuration_service_api'
274
+ require 'wallee/services/label_description_group_service_api'
275
+ require 'wallee/services/label_description_service_api'
276
+ require 'wallee/services/language_service_api'
277
+ require 'wallee/services/manual_task_service_api'
278
+ require 'wallee/services/payment_connector_configuration_service_api'
279
+ require 'wallee/services/payment_connector_service_api'
280
+ require 'wallee/services/payment_method_configuration_service_api'
281
+ require 'wallee/services/payment_method_service_api'
282
+ require 'wallee/services/payment_processor_configuration_service_api'
283
+ require 'wallee/services/payment_processor_service_api'
284
+ require 'wallee/services/permission_service_api'
285
+ require 'wallee/services/refund_service_api'
286
+ require 'wallee/services/space_service_api'
287
+ require 'wallee/services/static_value_service_api'
288
+ require 'wallee/services/subscriber_service_api'
289
+ require 'wallee/services/subscription_charge_service_api'
290
+ require 'wallee/services/subscription_ledger_entry_service_api'
291
+ require 'wallee/services/subscription_metric_service_api'
292
+ require 'wallee/services/subscription_metric_usage_service_api'
293
+ require 'wallee/services/subscription_period_bill_service_api'
294
+ require 'wallee/services/subscription_product_component_group_service_api'
295
+ require 'wallee/services/subscription_product_component_service_api'
296
+ require 'wallee/services/subscription_product_fee_tier_service_api'
297
+ require 'wallee/services/subscription_product_metered_fee_service_api'
298
+ require 'wallee/services/subscription_product_period_fee_service_api'
299
+ require 'wallee/services/subscription_product_retirement_service_api'
300
+ require 'wallee/services/subscription_product_service_api'
301
+ require 'wallee/services/subscription_product_setup_fee_service_api'
302
+ require 'wallee/services/subscription_product_version_retirement_service_api'
303
+ require 'wallee/services/subscription_product_version_service_api'
304
+ require 'wallee/services/subscription_service_api'
305
+ require 'wallee/services/subscription_suspension_service_api'
306
+ require 'wallee/services/subscription_version_service_api'
307
+ require 'wallee/services/token_service_api'
308
+ require 'wallee/services/token_version_service_api'
309
+ require 'wallee/services/transaction_completion_service_api'
310
+ require 'wallee/services/transaction_invoice_service_api'
311
+ require 'wallee/services/transaction_service_api'
312
+ require 'wallee/services/transaction_void_service_api'
313
+ require 'wallee/services/webhook_listener_service_api'
314
+ require 'wallee/services/webhook_url_service_api'
315
+
316
+ module Wallee
317
+ class << self
318
+ # Customize default settings for the SDK using block.
319
+ # Wallee.configure do |config|
320
+ # config.user_id = "xxx"
321
+ # config.authentication_key = "xxx"
322
+ # end
323
+ # If no block given, return the default Configuration object.
324
+ def configure
325
+ if block_given?
326
+ yield(Configuration.default)
327
+ else
328
+ Configuration.default
329
+ end
330
+ end
331
+ end
332
+ end
@@ -0,0 +1,403 @@
1
+ =begin
2
+ Wallee API: 1.0.0
3
+
4
+ The wallee API allows an easy interaction with the wallee web service.
5
+
6
+
7
+
8
+ Licensed under the Apache License, Version 2.0 (the "License");
9
+ you may not use this file except in compliance with the License.
10
+ You may obtain a copy of the License at
11
+
12
+ http://www.apache.org/licenses/LICENSE-2.0
13
+
14
+ Unless required by applicable law or agreed to in writing, software
15
+ distributed under the License is distributed on an "AS IS" BASIS,
16
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ See the License for the specific language governing permissions and
18
+ limitations under the License.
19
+
20
+ =end
21
+
22
+ require 'date'
23
+ require 'json'
24
+ require 'logger'
25
+ require 'tempfile'
26
+ require 'typhoeus'
27
+ require 'uri'
28
+ require 'base64'
29
+ require 'time'
30
+ require 'openssl'
31
+
32
+ module Wallee
33
+ class ApiClient
34
+ # The Configuration object holding settings to be used in the API client.
35
+ attr_accessor :config
36
+
37
+ # Defines the headers to be used in HTTP requests of all API calls by default.
38
+ #
39
+ # @return [Hash]
40
+ attr_accessor :default_headers
41
+
42
+ # Initializes the ApiClient
43
+ # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
44
+ def initialize(config = Configuration.default)
45
+ @config = config
46
+ @user_agent = "Typhoeus"
47
+ @default_headers = {
48
+ 'Content-Type' => "application/json",
49
+ 'User-Agent' => @user_agent
50
+ }
51
+ end
52
+
53
+ def self.default
54
+ @@default ||= ApiClient.new
55
+ end
56
+
57
+ # Call an API with given options.
58
+ #
59
+ # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
60
+ # the data deserialized from response body (could be nil), response status code and response headers.
61
+ def call_api(http_method, path, opts = {})
62
+ request = build_request(http_method, path, opts)
63
+ response = request.run
64
+
65
+ if @config.debugging
66
+ @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
67
+ end
68
+
69
+ unless response.success?
70
+ if response.timed_out?
71
+ fail ApiError.new('Connection timed out')
72
+ elsif response.code == 0
73
+ # Errors from libcurl will be made visible here
74
+ fail ApiError.new(:code => 0,
75
+ :message => response.return_message)
76
+ else
77
+ fail ApiError.new(:code => response.code,
78
+ :response_headers => response.headers,
79
+ :response_body => response.body),
80
+ response.status_message
81
+ end
82
+ end
83
+
84
+ if opts[:return_type]
85
+ data = deserialize(response, opts[:return_type])
86
+ else
87
+ data = nil
88
+ end
89
+ return data, response.code, response.headers
90
+ end
91
+
92
+ # Builds the HTTP request
93
+ #
94
+ # @param [String] http_method HTTP method/verb (e.g. POST)
95
+ # @param [String] path URL path (e.g. /account/new)
96
+ # @option opts [Hash] :header_params Header parameters
97
+ # @option opts [Hash] :query_params Query parameters
98
+ # @option opts [Hash] :form_params Query parameters
99
+ # @option opts [Object] :body HTTP body (JSON/XML)
100
+ # @return [Typhoeus::Request] A Typhoeus Request
101
+ def build_request(http_method, path, opts = {})
102
+ url = build_request_url(path)
103
+ http_method = http_method.to_sym.downcase
104
+
105
+ header_params = @default_headers.merge(opts[:header_params] || {})
106
+ query_params = opts[:query_params] || {}
107
+ form_params = opts[:form_params] || {}
108
+
109
+
110
+ # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false)
111
+ _verify_ssl_host = true
112
+
113
+ header_params = header_params.merge(get_authentication_headers(http_method, path, query_params))
114
+
115
+ req_opts = {
116
+ :method => http_method,
117
+ :headers => header_params,
118
+ :params => query_params,
119
+ :params_encoding => @config.params_encoding,
120
+ :timeout => @config.timeout,
121
+ :ssl_verifypeer => true,
122
+ :ssl_verifyhost => 2,
123
+ :sslcert => @config.cert_file,
124
+ :sslkey => @config.key_file,
125
+ :verbose => @config.debugging
126
+ }
127
+
128
+ # set custom cert, if provided
129
+ req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert
130
+
131
+ if [:post, :patch, :put, :delete].include?(http_method)
132
+ req_body = build_request_body(header_params, form_params, opts[:body])
133
+ req_opts.update :body => req_body
134
+ if @config.debugging
135
+ @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
136
+ end
137
+ end
138
+
139
+ Typhoeus::Request.new(url, req_opts)
140
+ end
141
+
142
+
143
+
144
+ # Returns the headers required for the HTTP authentication
145
+ # @param [String] http_method HTTP method/verb (e.g. POST)
146
+ # @param [String] path URL path (e.g. /account/new)
147
+ # @return [Hash] the authentication headers
148
+ def get_authentication_headers(http_method, path, query)
149
+ completed_path = "#{@config.base_path}#{path}"+'?'+query.map{|k,v| "#{k}=#{v}"}.join('&')
150
+ version = "1"
151
+ timestamp = Time.now.to_i
152
+ securedData = "#{version}|#{@config.user_id}|#{timestamp}|#{http_method.upcase}|#{completed_path}"
153
+ {
154
+ "x-mac-version": version,
155
+ "x-mac-userid": @config.user_id,
156
+ "x-mac-timestamp": timestamp,
157
+ "x-mac-value": calculate_hmac(securedData)
158
+ }
159
+ end
160
+
161
+ # Returns the calculated sha512 hmac for the given data
162
+ # @param [String] secured_data to hash
163
+ # @return [String] the calulated hmac
164
+ def calculate_hmac(secured_data)
165
+ decoded_secret = Base64.decode64(@config.authentication_key);
166
+ digest = OpenSSL::Digest.new('sha512')
167
+ Base64.strict_encode64(OpenSSL::HMAC.digest(digest, decoded_secret, secured_data)).strip;
168
+ end
169
+
170
+ # Check if the given MIME is a JSON MIME.
171
+ # JSON MIME examples:
172
+ # application/json
173
+ # application/json; charset=UTF8
174
+ # APPLICATION/JSON
175
+ # */*
176
+ # @param [String] mime MIME
177
+ # @return [Boolean] True if the MIME is application/json
178
+ def json_mime?(mime)
179
+ (mime == "*/*") || !(mime =~ /\Aapplication\/json(;.*)?\z/i).nil?
180
+ end
181
+
182
+ # Deserialize the response to the given return type.
183
+ #
184
+ # @param [Response] response HTTP response
185
+ # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
186
+ def deserialize(response, return_type)
187
+ body = response.body
188
+ return nil if body.nil? || body.empty?
189
+
190
+ # return response body directly for String return type
191
+ return body if return_type == 'String'
192
+
193
+ # handle file downloading - save response body into a tmp file and return the File instance
194
+ return download_file(response) if return_type == 'File'
195
+
196
+ # ensuring a default content type
197
+ content_type = response.headers['Content-Type'] || 'application/json'
198
+
199
+ fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
200
+
201
+ begin
202
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
203
+ rescue JSON::ParserError => e
204
+ if %w(String Date DateTime).include?(return_type)
205
+ data = body
206
+ else
207
+ raise e
208
+ end
209
+ end
210
+
211
+ convert_to_type data, return_type
212
+ end
213
+
214
+ # Convert data to the given return type.
215
+ # @param [Object] data Data to be converted
216
+ # @param [String] return_type Return type
217
+ # @return [Mixed] Data in a particular type
218
+ def convert_to_type(data, return_type)
219
+ return nil if data.nil?
220
+ case return_type
221
+ when 'String'
222
+ data.to_s
223
+ when 'Integer'
224
+ data.to_i
225
+ when 'Float'
226
+ data.to_f
227
+ when 'BOOLEAN'
228
+ data == true
229
+ when 'DateTime'
230
+ # parse date time (expecting ISO 8601 format)
231
+ DateTime.parse data
232
+ when 'Date'
233
+ # parse date time (expecting ISO 8601 format)
234
+ Date.parse data
235
+ when 'Object'
236
+ # generic object (usually a Hash), return directly
237
+ data
238
+ when /\AArray<(.+)>\z/
239
+ # e.g. Array<Pet>
240
+ sub_type = $1
241
+ data.map {|item| convert_to_type(item, sub_type) }
242
+ when /\AHash\<String, (.+)\>\z/
243
+ # e.g. Hash<String, Integer>
244
+ sub_type = $1
245
+ {}.tap do |hash|
246
+ data.each {|k, v| hash[k] = convert_to_type(v, sub_type) }
247
+ end
248
+ else
249
+ # models, e.g. Pet
250
+ Wallee.const_get(return_type).new.tap do |model|
251
+ model.build_from_hash data
252
+ end
253
+ end
254
+ end
255
+
256
+ # Save response body into a file in (the defined) temporary folder, using the filename
257
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
258
+ #
259
+ # @see Configuration#temp_folder_path
260
+ # @return [Tempfile] the file downloaded
261
+ def download_file(response)
262
+ content_disposition = response.headers['Content-Disposition']
263
+ if content_disposition and content_disposition =~ /filename=/i
264
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
265
+ prefix = sanitize_filename(filename)
266
+ else
267
+ prefix = 'download-'
268
+ end
269
+ prefix = prefix + '-' unless prefix.end_with?('-')
270
+
271
+ tempfile = nil
272
+ encoding = response.body.encoding
273
+ Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding) do |file|
274
+ file.write(response.body)
275
+ tempfile = file
276
+ end
277
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
278
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
279
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
280
+ "explicitly with `tempfile.delete`"
281
+ tempfile
282
+ end
283
+
284
+ # Sanitize filename by removing path.
285
+ # e.g. ../../sun.gif becomes sun.gif
286
+ #
287
+ # @param [String] filename the filename to be sanitized
288
+ # @return [String] the sanitized filename
289
+ def sanitize_filename(filename)
290
+ filename.gsub(/.*[\/\\]/, '')
291
+ end
292
+
293
+ def build_request_url(path)
294
+ # Add leading and trailing slashes to path
295
+ path = "/#{path}".gsub(/\/+/, '/')
296
+ URI.encode(@config.base_url + path)
297
+ end
298
+
299
+ # Builds the HTTP request body
300
+ #
301
+ # @param [Hash] header_params Header parameters
302
+ # @param [Hash] form_params Query parameters
303
+ # @param [Object] body HTTP body (JSON/XML)
304
+ # @return [String] HTTP body data in the form of string
305
+ def build_request_body(header_params, form_params, body)
306
+ # http form
307
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
308
+ header_params['Content-Type'] == 'multipart/form-data'
309
+ data = {}
310
+ form_params.each do |key, value|
311
+ case value
312
+ when File, Array, nil
313
+ # let typhoeus handle File, Array and nil parameters
314
+ data[key] = value
315
+ else
316
+ data[key] = value.to_s
317
+ end
318
+ end
319
+ elsif body
320
+ data = body.is_a?(String) ? body : body.to_json
321
+ else
322
+ data = nil
323
+ end
324
+ data
325
+ end
326
+
327
+
328
+
329
+ # Sets user agent in HTTP header
330
+ #
331
+ # @param [String] user_agent User agent (e.g. swagger-codegen/ruby/1.0.0)
332
+ def user_agent=(user_agent)
333
+ @user_agent = user_agent
334
+ @default_headers['User-Agent'] = @user_agent
335
+ end
336
+
337
+ # Return Accept header based on an array of accepts provided.
338
+ # @param [Array] accepts array for Accept
339
+ # @return [String] the Accept header (e.g. application/json)
340
+ def select_header_accept(accepts)
341
+ return nil if accepts.nil? || accepts.empty?
342
+ # use JSON when present, otherwise use all of the provided
343
+ json_accept = accepts.find { |s| json_mime?(s) }
344
+ return json_accept || accepts.join(',')
345
+ end
346
+
347
+ # Return Content-Type header based on an array of content types provided.
348
+ # @param [Array] content_types array for Content-Type
349
+ # @return [String] the Content-Type header (e.g. application/json)
350
+ def select_header_content_type(content_types)
351
+ # use application/json by default
352
+ return 'application/json' if content_types.nil? || content_types.empty?
353
+ # use JSON when present, otherwise use the first one
354
+ json_content_type = content_types.find { |s| json_mime?(s) }
355
+ return json_content_type || content_types.first
356
+ end
357
+
358
+ # Convert object (array, hash, object, etc) to JSON string.
359
+ # @param [Object] model object to be converted into JSON string
360
+ # @return [String] JSON string representation of the object
361
+ def object_to_http_body(model)
362
+ return model if model.nil? || model.is_a?(String)
363
+ local_body = nil
364
+ if model.is_a?(Array)
365
+ local_body = model.map{|m| object_to_hash(m) }
366
+ else
367
+ local_body = object_to_hash(model)
368
+ end
369
+ local_body.to_json
370
+ end
371
+
372
+ # Convert object(non-array) to hash.
373
+ # @param [Object] obj object to be converted into JSON string
374
+ # @return [String] JSON string representation of the object
375
+ def object_to_hash(obj)
376
+ if obj.respond_to?(:to_hash)
377
+ obj.to_hash
378
+ else
379
+ obj
380
+ end
381
+ end
382
+
383
+ # Build parameter value according to the given collection format.
384
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
385
+ def build_collection_param(param, collection_format)
386
+ case collection_format
387
+ when :csv
388
+ param.join(',')
389
+ when :ssv
390
+ param.join(' ')
391
+ when :tsv
392
+ param.join("\t")
393
+ when :pipes
394
+ param.join('|')
395
+ when :multi
396
+ # return the array directly as typhoeus will handle it as expected
397
+ param
398
+ else
399
+ fail "unknown collection format: #{collection_format.inspect}"
400
+ end
401
+ end
402
+ end
403
+ end