connect-sdk-ruby 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 (377) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +2 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +140 -0
  5. data/Rakefile +34 -0
  6. data/connect-sdk-ruby.gemspec +28 -0
  7. data/examples/merchant/example_configuration.yml +6 -0
  8. data/examples/merchant/hostedcheckouts/create_hosted_checkout_example.rb +53 -0
  9. data/examples/merchant/hostedcheckouts/get_hosted_checkout_example.rb +22 -0
  10. data/examples/merchant/payments/approve_payment_example.rb +42 -0
  11. data/examples/merchant/payments/cancel_approval_payment_example.rb +22 -0
  12. data/examples/merchant/payments/cancel_payment_example.rb +22 -0
  13. data/examples/merchant/payments/create_payment_example.rb +177 -0
  14. data/examples/merchant/payments/get_payment_example.rb +22 -0
  15. data/examples/merchant/payments/process_challenged_payment_example.rb +22 -0
  16. data/examples/merchant/payments/refund_payment_example.rb +85 -0
  17. data/examples/merchant/payments/tokenize_payment_example.rb +27 -0
  18. data/examples/merchant/payouts/approve_payout_example.rb +27 -0
  19. data/examples/merchant/payouts/cancel_approval_payout_example.rb +22 -0
  20. data/examples/merchant/payouts/cancel_payout_example.rb +22 -0
  21. data/examples/merchant/payouts/create_payout_example.rb +96 -0
  22. data/examples/merchant/payouts/get_payout_example.rb +22 -0
  23. data/examples/merchant/productgroups/get_payment_product_group_example.rb +32 -0
  24. data/examples/merchant/productgroups/get_payment_product_groups_example.rb +32 -0
  25. data/examples/merchant/products/get_directory_example.rb +28 -0
  26. data/examples/merchant/products/get_payment_product_example.rb +32 -0
  27. data/examples/merchant/products/get_payment_products_example.rb +32 -0
  28. data/examples/merchant/refunds/approve_refund_example.rb +27 -0
  29. data/examples/merchant/refunds/cancel_approval_refund_example.rb +22 -0
  30. data/examples/merchant/refunds/cancel_refund_example.rb +22 -0
  31. data/examples/merchant/refunds/get_refund_example.rb +22 -0
  32. data/examples/merchant/riskassessments/risk_assessment_bank_account_example.rb +54 -0
  33. data/examples/merchant/riskassessments/risk_assessment_cards_example.rb +114 -0
  34. data/examples/merchant/services/convert_amount_example.rb +29 -0
  35. data/examples/merchant/services/convert_bank_account_example.rb +34 -0
  36. data/examples/merchant/services/iin_details_example.rb +27 -0
  37. data/examples/merchant/services/test_connection_example.rb +22 -0
  38. data/examples/merchant/sessions/create_session_example.rb +34 -0
  39. data/examples/merchant/tokens/approve_sepa_direct_debit_token_example.rb +29 -0
  40. data/examples/merchant/tokens/create_token_example.rb +82 -0
  41. data/examples/merchant/tokens/delete_token_example.rb +27 -0
  42. data/examples/merchant/tokens/get_token_example.rb +22 -0
  43. data/examples/merchant/tokens/update_token_example.rb +76 -0
  44. data/lib/ingenico/connect/sdk.rb +27 -0
  45. data/lib/ingenico/connect/sdk/api_exception.rb +52 -0
  46. data/lib/ingenico/connect/sdk/api_resource.rb +126 -0
  47. data/lib/ingenico/connect/sdk/authenticator.rb +15 -0
  48. data/lib/ingenico/connect/sdk/authorization_exception.rb +13 -0
  49. data/lib/ingenico/connect/sdk/call_context.rb +26 -0
  50. data/lib/ingenico/connect/sdk/client.rb +92 -0
  51. data/lib/ingenico/connect/sdk/communication_exception.rb +15 -0
  52. data/lib/ingenico/connect/sdk/communicator.rb +277 -0
  53. data/lib/ingenico/connect/sdk/communicator_configuration.rb +98 -0
  54. data/lib/ingenico/connect/sdk/connection.rb +31 -0
  55. data/lib/ingenico/connect/sdk/data_object.rb +43 -0
  56. data/lib/ingenico/connect/sdk/declined_payment_exception.rb +44 -0
  57. data/lib/ingenico/connect/sdk/declined_payout_exception.rb +44 -0
  58. data/lib/ingenico/connect/sdk/declined_refund_exception.rb +46 -0
  59. data/lib/ingenico/connect/sdk/declined_transaction_exception.rb +16 -0
  60. data/lib/ingenico/connect/sdk/defaultimpl.rb +6 -0
  61. data/lib/ingenico/connect/sdk/defaultimpl/authorization_type.rb +18 -0
  62. data/lib/ingenico/connect/sdk/defaultimpl/default_authenticator.rb +106 -0
  63. data/lib/ingenico/connect/sdk/defaultimpl/default_connection.rb +242 -0
  64. data/lib/ingenico/connect/sdk/defaultimpl/default_marshaller.rb +35 -0
  65. data/lib/ingenico/connect/sdk/domain/definitions/abstract_order_status.rb +32 -0
  66. data/lib/ingenico/connect/sdk/domain/definitions/abstract_payment_method_specific_input.rb +32 -0
  67. data/lib/ingenico/connect/sdk/domain/definitions/additional_order_input_airline_data.rb +36 -0
  68. data/lib/ingenico/connect/sdk/domain/definitions/address.rb +81 -0
  69. data/lib/ingenico/connect/sdk/domain/definitions/airline_data.rb +165 -0
  70. data/lib/ingenico/connect/sdk/domain/definitions/airline_flight_leg.rb +102 -0
  71. data/lib/ingenico/connect/sdk/domain/definitions/amount_of_money.rb +39 -0
  72. data/lib/ingenico/connect/sdk/domain/definitions/bank_account.rb +32 -0
  73. data/lib/ingenico/connect/sdk/domain/definitions/bank_account_bban.rb +67 -0
  74. data/lib/ingenico/connect/sdk/domain/definitions/bank_account_iban.rb +32 -0
  75. data/lib/ingenico/connect/sdk/domain/definitions/card.rb +32 -0
  76. data/lib/ingenico/connect/sdk/domain/definitions/card_essentials.rb +39 -0
  77. data/lib/ingenico/connect/sdk/domain/definitions/card_fraud_results.rb +50 -0
  78. data/lib/ingenico/connect/sdk/domain/definitions/card_without_cvv.rb +39 -0
  79. data/lib/ingenico/connect/sdk/domain/definitions/company_information.rb +32 -0
  80. data/lib/ingenico/connect/sdk/domain/definitions/contact_details_base.rb +39 -0
  81. data/lib/ingenico/connect/sdk/domain/definitions/customer_base.rb +50 -0
  82. data/lib/ingenico/connect/sdk/domain/definitions/fraud_fields.rb +115 -0
  83. data/lib/ingenico/connect/sdk/domain/definitions/fraud_results.rb +32 -0
  84. data/lib/ingenico/connect/sdk/domain/definitions/fraud_results_retail_decisions.rb +46 -0
  85. data/lib/ingenico/connect/sdk/domain/definitions/key_value_pair.rb +39 -0
  86. data/lib/ingenico/connect/sdk/domain/definitions/order_status_output.rb +67 -0
  87. data/lib/ingenico/connect/sdk/domain/definitions/payment_product_filter.rb +51 -0
  88. data/lib/ingenico/connect/sdk/domain/definitions/personal_name_base.rb +46 -0
  89. data/lib/ingenico/connect/sdk/domain/definitions/result_do_risk_assessment.rb +61 -0
  90. data/lib/ingenico/connect/sdk/domain/definitions/retail_decisions_cc_fraud_check_output.rb +46 -0
  91. data/lib/ingenico/connect/sdk/domain/definitions/validation_bank_account_check.rb +46 -0
  92. data/lib/ingenico/connect/sdk/domain/definitions/validation_bank_account_output.rb +67 -0
  93. data/lib/ingenico/connect/sdk/domain/errors/api_error.rb +60 -0
  94. data/lib/ingenico/connect/sdk/domain/errors/error_response.rb +46 -0
  95. data/lib/ingenico/connect/sdk/domain/hostedcheckout/create_hosted_checkout_request.rb +102 -0
  96. data/lib/ingenico/connect/sdk/domain/hostedcheckout/create_hosted_checkout_response.rb +59 -0
  97. data/lib/ingenico/connect/sdk/domain/hostedcheckout/created_payment_output.rb +72 -0
  98. data/lib/ingenico/connect/sdk/domain/hostedcheckout/displayed_data.rb +53 -0
  99. data/lib/ingenico/connect/sdk/domain/hostedcheckout/get_hosted_checkout_response.rb +43 -0
  100. data/lib/ingenico/connect/sdk/domain/hostedcheckout/hosted_checkout_specific_input.rb +78 -0
  101. data/lib/ingenico/connect/sdk/domain/hostedcheckout/payment_product_filters_hosted_checkout.rb +53 -0
  102. data/lib/ingenico/connect/sdk/domain/metadata/shopping_cart_extension.rb +48 -0
  103. data/lib/ingenico/connect/sdk/domain/payment/abstract_payment_method_specific_output.rb +32 -0
  104. data/lib/ingenico/connect/sdk/domain/payment/additional_order_input.rb +72 -0
  105. data/lib/ingenico/connect/sdk/domain/payment/address_personal.rb +36 -0
  106. data/lib/ingenico/connect/sdk/domain/payment/approve_payment_card_payment_method_specific_output.rb +32 -0
  107. data/lib/ingenico/connect/sdk/domain/payment/approve_payment_non_sepa_direct_debit_payment_method_specific_input.rb +16 -0
  108. data/lib/ingenico/connect/sdk/domain/payment/approve_payment_payment_method_specific_input.rb +39 -0
  109. data/lib/ingenico/connect/sdk/domain/payment/approve_payment_request.rb +65 -0
  110. data/lib/ingenico/connect/sdk/domain/payment/approve_payment_sepa_direct_debit_payment_method_specific_input.rb +16 -0
  111. data/lib/ingenico/connect/sdk/domain/payment/bank_transfer_payment_method_specific_input.rb +16 -0
  112. data/lib/ingenico/connect/sdk/domain/payment/bank_transfer_payment_method_specific_input_base.rb +32 -0
  113. data/lib/ingenico/connect/sdk/domain/payment/bank_transfer_payment_method_specific_output.rb +16 -0
  114. data/lib/ingenico/connect/sdk/domain/payment/cancel_approval_payment_response.rb +36 -0
  115. data/lib/ingenico/connect/sdk/domain/payment/cancel_payment_card_payment_method_specific_output.rb +32 -0
  116. data/lib/ingenico/connect/sdk/domain/payment/cancel_payment_response.rb +47 -0
  117. data/lib/ingenico/connect/sdk/domain/payment/card_payment_method_specific_input.rb +61 -0
  118. data/lib/ingenico/connect/sdk/domain/payment/card_payment_method_specific_input_base.rb +60 -0
  119. data/lib/ingenico/connect/sdk/domain/payment/card_payment_method_specific_output.rb +65 -0
  120. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_method_specific_input.rb +47 -0
  121. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_method_specific_input_base.rb +16 -0
  122. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_method_specific_output.rb +16 -0
  123. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1503_specific_input.rb +32 -0
  124. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1504_specific_input.rb +32 -0
  125. data/lib/ingenico/connect/sdk/domain/payment/contact_details.rb +39 -0
  126. data/lib/ingenico/connect/sdk/domain/payment/create_payment_request.rb +131 -0
  127. data/lib/ingenico/connect/sdk/domain/payment/create_payment_response.rb +16 -0
  128. data/lib/ingenico/connect/sdk/domain/payment/create_payment_result.rb +58 -0
  129. data/lib/ingenico/connect/sdk/domain/payment/customer.rb +83 -0
  130. data/lib/ingenico/connect/sdk/domain/payment/external_cardholder_authentication_data.rb +60 -0
  131. data/lib/ingenico/connect/sdk/domain/payment/invoice_payment_method_specific_input.rb +32 -0
  132. data/lib/ingenico/connect/sdk/domain/payment/invoice_payment_method_specific_output.rb +16 -0
  133. data/lib/ingenico/connect/sdk/domain/payment/level3_summary_data.rb +46 -0
  134. data/lib/ingenico/connect/sdk/domain/payment/line_item.rb +58 -0
  135. data/lib/ingenico/connect/sdk/domain/payment/line_item_invoice_data.rb +60 -0
  136. data/lib/ingenico/connect/sdk/domain/payment/line_item_level3_interchange_information.rb +81 -0
  137. data/lib/ingenico/connect/sdk/domain/payment/merchant_action.rb +64 -0
  138. data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_method_specific_input.rb +71 -0
  139. data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_method_specific_output.rb +36 -0
  140. data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_product705_specific_input.rb +50 -0
  141. data/lib/ingenico/connect/sdk/domain/payment/order.rb +83 -0
  142. data/lib/ingenico/connect/sdk/domain/payment/order_approve_payment.rb +47 -0
  143. data/lib/ingenico/connect/sdk/domain/payment/order_invoice_data.rb +59 -0
  144. data/lib/ingenico/connect/sdk/domain/payment/order_output.rb +47 -0
  145. data/lib/ingenico/connect/sdk/domain/payment/order_references.rb +57 -0
  146. data/lib/ingenico/connect/sdk/domain/payment/order_references_approve_payment.rb +32 -0
  147. data/lib/ingenico/connect/sdk/domain/payment/order_type_information.rb +39 -0
  148. data/lib/ingenico/connect/sdk/domain/payment/payment.rb +54 -0
  149. data/lib/ingenico/connect/sdk/domain/payment/payment_approval_response.rb +47 -0
  150. data/lib/ingenico/connect/sdk/domain/payment/payment_creation_output.rb +39 -0
  151. data/lib/ingenico/connect/sdk/domain/payment/payment_creation_references.rb +39 -0
  152. data/lib/ingenico/connect/sdk/domain/payment/payment_error_response.rb +57 -0
  153. data/lib/ingenico/connect/sdk/domain/payment/payment_output.rb +116 -0
  154. data/lib/ingenico/connect/sdk/domain/payment/payment_product836_specific_output.rb +32 -0
  155. data/lib/ingenico/connect/sdk/domain/payment/payment_product840_customer_account.rb +88 -0
  156. data/lib/ingenico/connect/sdk/domain/payment/payment_product840_specific_output.rb +47 -0
  157. data/lib/ingenico/connect/sdk/domain/payment/payment_references.rb +67 -0
  158. data/lib/ingenico/connect/sdk/domain/payment/payment_response.rb +16 -0
  159. data/lib/ingenico/connect/sdk/domain/payment/payment_status_output.rb +39 -0
  160. data/lib/ingenico/connect/sdk/domain/payment/personal_information.rb +50 -0
  161. data/lib/ingenico/connect/sdk/domain/payment/personal_name.rb +32 -0
  162. data/lib/ingenico/connect/sdk/domain/payment/redirect_data.rb +39 -0
  163. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_input.rb +72 -0
  164. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_input_base.rb +39 -0
  165. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_output.rb +58 -0
  166. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product809_specific_input.rb +39 -0
  167. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product816_specific_input.rb +36 -0
  168. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product882_specific_input.rb +32 -0
  169. data/lib/ingenico/connect/sdk/domain/payment/refund_bank_method_specific_output.rb +16 -0
  170. data/lib/ingenico/connect/sdk/domain/payment/refund_card_method_specific_output.rb +16 -0
  171. data/lib/ingenico/connect/sdk/domain/payment/refund_e_wallet_method_specific_output.rb +36 -0
  172. data/lib/ingenico/connect/sdk/domain/payment/refund_method_specific_output.rb +39 -0
  173. data/lib/ingenico/connect/sdk/domain/payment/refund_output.rb +72 -0
  174. data/lib/ingenico/connect/sdk/domain/payment/refund_payment_product840_customer_account.rb +46 -0
  175. data/lib/ingenico/connect/sdk/domain/payment/refund_payment_product840_specific_output.rb +36 -0
  176. data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_method_specific_input.rb +60 -0
  177. data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_method_specific_output.rb +36 -0
  178. data/lib/ingenico/connect/sdk/domain/payment/three_d_secure_results.rb +46 -0
  179. data/lib/ingenico/connect/sdk/domain/payment/tokenize_payment_request.rb +32 -0
  180. data/lib/ingenico/connect/sdk/domain/payout/approve_payout_request.rb +32 -0
  181. data/lib/ingenico/connect/sdk/domain/payout/create_payout_request.rb +101 -0
  182. data/lib/ingenico/connect/sdk/domain/payout/payout_customer.rb +76 -0
  183. data/lib/ingenico/connect/sdk/domain/payout/payout_error_response.rb +57 -0
  184. data/lib/ingenico/connect/sdk/domain/payout/payout_references.rb +46 -0
  185. data/lib/ingenico/connect/sdk/domain/payout/payout_response.rb +16 -0
  186. data/lib/ingenico/connect/sdk/domain/payout/payout_result.rb +54 -0
  187. data/lib/ingenico/connect/sdk/domain/product/account_on_file.rb +64 -0
  188. data/lib/ingenico/connect/sdk/domain/product/account_on_file_attribute.rb +39 -0
  189. data/lib/ingenico/connect/sdk/domain/product/account_on_file_display_hints.rb +46 -0
  190. data/lib/ingenico/connect/sdk/domain/product/directory.rb +39 -0
  191. data/lib/ingenico/connect/sdk/domain/product/directory_entry.rb +59 -0
  192. data/lib/ingenico/connect/sdk/domain/product/empty_validator.rb +16 -0
  193. data/lib/ingenico/connect/sdk/domain/product/fixed_list_validator.rb +38 -0
  194. data/lib/ingenico/connect/sdk/domain/product/label_template_element.rb +39 -0
  195. data/lib/ingenico/connect/sdk/domain/product/length_validator.rb +39 -0
  196. data/lib/ingenico/connect/sdk/domain/product/payment_product.rb +134 -0
  197. data/lib/ingenico/connect/sdk/domain/product/payment_product_display_hints.rb +46 -0
  198. data/lib/ingenico/connect/sdk/domain/product/payment_product_field.rb +61 -0
  199. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_data_restrictions.rb +43 -0
  200. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_display_hints.rb +96 -0
  201. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_form_element.rb +46 -0
  202. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_tooltip.rb +39 -0
  203. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_validators.rb +100 -0
  204. data/lib/ingenico/connect/sdk/domain/product/payment_product_group.rb +71 -0
  205. data/lib/ingenico/connect/sdk/domain/product/payment_product_group_response.rb +16 -0
  206. data/lib/ingenico/connect/sdk/domain/product/payment_product_groups.rb +39 -0
  207. data/lib/ingenico/connect/sdk/domain/product/payment_product_response.rb +16 -0
  208. data/lib/ingenico/connect/sdk/domain/product/payment_products.rb +39 -0
  209. data/lib/ingenico/connect/sdk/domain/product/range_validator.rb +39 -0
  210. data/lib/ingenico/connect/sdk/domain/product/regular_expression_validator.rb +32 -0
  211. data/lib/ingenico/connect/sdk/domain/product/value_mapping_element.rb +39 -0
  212. data/lib/ingenico/connect/sdk/domain/refund/approve_refund_request.rb +32 -0
  213. data/lib/ingenico/connect/sdk/domain/refund/bank_account_bban_refund.rb +39 -0
  214. data/lib/ingenico/connect/sdk/domain/refund/bank_refund_method_specific_input.rb +54 -0
  215. data/lib/ingenico/connect/sdk/domain/refund/refund_customer.rb +58 -0
  216. data/lib/ingenico/connect/sdk/domain/refund/refund_error_response.rb +57 -0
  217. data/lib/ingenico/connect/sdk/domain/refund/refund_references.rb +32 -0
  218. data/lib/ingenico/connect/sdk/domain/refund/refund_request.rb +76 -0
  219. data/lib/ingenico/connect/sdk/domain/refund/refund_response.rb +16 -0
  220. data/lib/ingenico/connect/sdk/domain/refund/refund_result.rb +54 -0
  221. data/lib/ingenico/connect/sdk/domain/riskassessments/customer_risk_assessment.rb +65 -0
  222. data/lib/ingenico/connect/sdk/domain/riskassessments/order_risk_assessment.rb +58 -0
  223. data/lib/ingenico/connect/sdk/domain/riskassessments/personal_information_risk_assessment.rb +36 -0
  224. data/lib/ingenico/connect/sdk/domain/riskassessments/personal_name_risk_assessment.rb +16 -0
  225. data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment.rb +54 -0
  226. data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment_bank_account.rb +47 -0
  227. data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment_card.rb +36 -0
  228. data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment_response.rb +39 -0
  229. data/lib/ingenico/connect/sdk/domain/services/bank_data.rb +53 -0
  230. data/lib/ingenico/connect/sdk/domain/services/bank_details.rb +47 -0
  231. data/lib/ingenico/connect/sdk/domain/services/bank_details_request.rb +16 -0
  232. data/lib/ingenico/connect/sdk/domain/services/bank_details_response.rb +69 -0
  233. data/lib/ingenico/connect/sdk/domain/services/convert_amount.rb +32 -0
  234. data/lib/ingenico/connect/sdk/domain/services/get_iin_details_request.rb +43 -0
  235. data/lib/ingenico/connect/sdk/domain/services/get_iin_details_response.rb +60 -0
  236. data/lib/ingenico/connect/sdk/domain/services/iin_detail.rb +39 -0
  237. data/lib/ingenico/connect/sdk/domain/services/payment_context.rb +50 -0
  238. data/lib/ingenico/connect/sdk/domain/services/swift.rb +95 -0
  239. data/lib/ingenico/connect/sdk/domain/services/test_connection.rb +32 -0
  240. data/lib/ingenico/connect/sdk/domain/sessions/payment_product_filters_client_session.rb +46 -0
  241. data/lib/ingenico/connect/sdk/domain/sessions/session_request.rb +49 -0
  242. data/lib/ingenico/connect/sdk/domain/sessions/session_response.rb +59 -0
  243. data/lib/ingenico/connect/sdk/domain/token/abstract_token.rb +32 -0
  244. data/lib/ingenico/connect/sdk/domain/token/approve_token_request.rb +16 -0
  245. data/lib/ingenico/connect/sdk/domain/token/contact_details_token.rb +16 -0
  246. data/lib/ingenico/connect/sdk/domain/token/create_token_request.rb +76 -0
  247. data/lib/ingenico/connect/sdk/domain/token/create_token_response.rb +39 -0
  248. data/lib/ingenico/connect/sdk/domain/token/creditor.rb +102 -0
  249. data/lib/ingenico/connect/sdk/domain/token/customer_token.rb +47 -0
  250. data/lib/ingenico/connect/sdk/domain/token/customer_token_with_contact_details.rb +36 -0
  251. data/lib/ingenico/connect/sdk/domain/token/debtor.rb +102 -0
  252. data/lib/ingenico/connect/sdk/domain/token/mandate_approval.rb +46 -0
  253. data/lib/ingenico/connect/sdk/domain/token/mandate_non_sepa_direct_debit.rb +36 -0
  254. data/lib/ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit.rb +36 -0
  255. data/lib/ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit_with_mandate_id.rb +32 -0
  256. data/lib/ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit_without_creditor.rb +79 -0
  257. data/lib/ingenico/connect/sdk/domain/token/personal_information_token.rb +36 -0
  258. data/lib/ingenico/connect/sdk/domain/token/personal_name_token.rb +16 -0
  259. data/lib/ingenico/connect/sdk/domain/token/token_card.rb +47 -0
  260. data/lib/ingenico/connect/sdk/domain/token/token_card_data.rb +50 -0
  261. data/lib/ingenico/connect/sdk/domain/token/token_e_wallet.rb +47 -0
  262. data/lib/ingenico/connect/sdk/domain/token/token_e_wallet_data.rb +32 -0
  263. data/lib/ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit.rb +47 -0
  264. data/lib/ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit_payment_product705_specific_data.rb +43 -0
  265. data/lib/ingenico/connect/sdk/domain/token/token_response.rb +83 -0
  266. data/lib/ingenico/connect/sdk/domain/token/token_sepa_direct_debit.rb +47 -0
  267. data/lib/ingenico/connect/sdk/domain/token/token_sepa_direct_debit_without_creditor.rb +47 -0
  268. data/lib/ingenico/connect/sdk/domain/token/update_token_request.rb +76 -0
  269. data/lib/ingenico/connect/sdk/endpoint_configuration.rb +139 -0
  270. data/lib/ingenico/connect/sdk/exceptions.rb +8 -0
  271. data/lib/ingenico/connect/sdk/factory.rb +200 -0
  272. data/lib/ingenico/connect/sdk/global_collect_exception.rb +15 -0
  273. data/lib/ingenico/connect/sdk/idempotence_exception.rb +24 -0
  274. data/lib/ingenico/connect/sdk/logging.rb +10 -0
  275. data/lib/ingenico/connect/sdk/logging/communicator_logger.rb +19 -0
  276. data/lib/ingenico/connect/sdk/logging/log_message_builder.rb +61 -0
  277. data/lib/ingenico/connect/sdk/logging/logging_capable.rb +19 -0
  278. data/lib/ingenico/connect/sdk/logging/logging_util.rb +298 -0
  279. data/lib/ingenico/connect/sdk/logging/request_log_message_builder.rb +42 -0
  280. data/lib/ingenico/connect/sdk/logging/response_log_message_builder.rb +34 -0
  281. data/lib/ingenico/connect/sdk/logging/ruby_communicator_logger.rb +58 -0
  282. data/lib/ingenico/connect/sdk/logging/stdout_communicator_logger.rb +36 -0
  283. data/lib/ingenico/connect/sdk/marshaller.rb +19 -0
  284. data/lib/ingenico/connect/sdk/marshaller_syntax_exception.rb +6 -0
  285. data/lib/ingenico/connect/sdk/merchant/hostedcheckouts/hostedcheckouts_client.rb +88 -0
  286. data/lib/ingenico/connect/sdk/merchant/merchant_client.rb +110 -0
  287. data/lib/ingenico/connect/sdk/merchant/payments/payments_client.rb +319 -0
  288. data/lib/ingenico/connect/sdk/merchant/payouts/payouts_client.rb +197 -0
  289. data/lib/ingenico/connect/sdk/merchant/productgroups/find_productgroups_params.rb +55 -0
  290. data/lib/ingenico/connect/sdk/merchant/productgroups/get_productgroup_params.rb +55 -0
  291. data/lib/ingenico/connect/sdk/merchant/productgroups/productgroups_client.rb +90 -0
  292. data/lib/ingenico/connect/sdk/merchant/products/directory_params.rb +31 -0
  293. data/lib/ingenico/connect/sdk/merchant/products/find_products_params.rb +55 -0
  294. data/lib/ingenico/connect/sdk/merchant/products/get_product_params.rb +55 -0
  295. data/lib/ingenico/connect/sdk/merchant/products/products_client.rb +124 -0
  296. data/lib/ingenico/connect/sdk/merchant/refunds/refunds_client.rb +154 -0
  297. data/lib/ingenico/connect/sdk/merchant/riskassessments/riskassessments_client.rb +85 -0
  298. data/lib/ingenico/connect/sdk/merchant/services/convert_amount_params.rb +35 -0
  299. data/lib/ingenico/connect/sdk/merchant/services/services_client.rb +149 -0
  300. data/lib/ingenico/connect/sdk/merchant/sessions/sessions_client.rb +55 -0
  301. data/lib/ingenico/connect/sdk/merchant/tokens/delete_token_params.rb +27 -0
  302. data/lib/ingenico/connect/sdk/merchant/tokens/tokens_client.rb +192 -0
  303. data/lib/ingenico/connect/sdk/meta_data_provider.rb +152 -0
  304. data/lib/ingenico/connect/sdk/modules.rb +130 -0
  305. data/lib/ingenico/connect/sdk/not_found_exception.rb +19 -0
  306. data/lib/ingenico/connect/sdk/param_request.rb +33 -0
  307. data/lib/ingenico/connect/sdk/pooled_connection.rb +21 -0
  308. data/lib/ingenico/connect/sdk/proxy_configuration.rb +75 -0
  309. data/lib/ingenico/connect/sdk/reference_exception.rb +14 -0
  310. data/lib/ingenico/connect/sdk/request_header.rb +25 -0
  311. data/lib/ingenico/connect/sdk/request_param.rb +24 -0
  312. data/lib/ingenico/connect/sdk/response.rb +62 -0
  313. data/lib/ingenico/connect/sdk/response_exception.rb +54 -0
  314. data/lib/ingenico/connect/sdk/response_header.rb +25 -0
  315. data/lib/ingenico/connect/sdk/session.rb +39 -0
  316. data/lib/ingenico/connect/sdk/validation_exception.rb +14 -0
  317. data/spec/comparable_extension.rb +29 -0
  318. data/spec/fixtures/resources/defaultimpl/convertAmount.json +3 -0
  319. data/spec/fixtures/resources/defaultimpl/createPayment.failure.invalidCardNumber.json +11 -0
  320. data/spec/fixtures/resources/defaultimpl/createPayment.failure.rejected.json +48 -0
  321. data/spec/fixtures/resources/defaultimpl/createPayment.json +40 -0
  322. data/spec/fixtures/resources/defaultimpl/idempotence_duplicate_failure.json +8 -0
  323. data/spec/fixtures/resources/defaultimpl/idempotence_rejected.json +46 -0
  324. data/spec/fixtures/resources/defaultimpl/idempotence_success.json +39 -0
  325. data/spec/fixtures/resources/defaultimpl/notFound.html +1 -0
  326. data/spec/fixtures/resources/defaultimpl/testConnection.json +3 -0
  327. data/spec/fixtures/resources/defaultimpl/unknownServerError.json +10 -0
  328. data/spec/fixtures/resources/logging/bodyNoObfuscation.json +17 -0
  329. data/spec/fixtures/resources/logging/bodyWithBinObfuscated.json +3 -0
  330. data/spec/fixtures/resources/logging/bodyWithBinOriginal.json +3 -0
  331. data/spec/fixtures/resources/logging/bodyWithCardObfuscated.json +21 -0
  332. data/spec/fixtures/resources/logging/bodyWithCardOriginal.json +21 -0
  333. data/spec/fixtures/resources/logging/bodyWithIbanObfuscated.json +19 -0
  334. data/spec/fixtures/resources/logging/bodyWithIbanOriginal.json +19 -0
  335. data/spec/fixtures/resources/payment/duplicate_request.json +8 -0
  336. data/spec/fixtures/resources/payment/invalid_authorization.json +9 -0
  337. data/spec/fixtures/resources/payment/invalid_request.json +11 -0
  338. data/spec/fixtures/resources/payment/method_not_allowed.html +1 -0
  339. data/spec/fixtures/resources/payment/not_found.html +1 -0
  340. data/spec/fixtures/resources/payment/pending_approval.json +39 -0
  341. data/spec/fixtures/resources/payment/rejected.json +46 -0
  342. data/spec/fixtures/resources/properties.proxy.yml +13 -0
  343. data/spec/fixtures/resources/properties.yml +7 -0
  344. data/spec/integration/connection_pooling_spec.rb +78 -0
  345. data/spec/integration/convert_amount_spec.rb +25 -0
  346. data/spec/integration/idempotence_spec.rb +59 -0
  347. data/spec/integration/multiline_header_spec.rb +30 -0
  348. data/spec/integration/payment_product_groups_spec.rb +23 -0
  349. data/spec/integration/payment_products_spec.rb +22 -0
  350. data/spec/integration/risk_assessments_spec.rb +37 -0
  351. data/spec/integration/sdk_proxy_spec.rb +89 -0
  352. data/spec/integration/token_spec.rb +42 -0
  353. data/spec/integration_setup.rb +50 -0
  354. data/spec/lib/client_spec.rb +69 -0
  355. data/spec/lib/communicator_configuration_spec.rb +179 -0
  356. data/spec/lib/communicator_spec.rb +31 -0
  357. data/spec/lib/defaultimpl/default_authenticator_spec.rb +74 -0
  358. data/spec/lib/defaultimpl/default_connection_idempotence_spec.rb +142 -0
  359. data/spec/lib/defaultimpl/default_connection_logger_spec.rb +526 -0
  360. data/spec/lib/defaultimpl/default_connection_spec.rb +334 -0
  361. data/spec/lib/defaultimpl/default_marshaller_spec.rb +36 -0
  362. data/spec/lib/factory_spec.rb +41 -0
  363. data/spec/lib/logging/header_obfuscator_spec.rb +51 -0
  364. data/spec/lib/logging/logging_util_spec.rb +143 -0
  365. data/spec/lib/logging/obfuscator_spec.rb +52 -0
  366. data/spec/lib/logging/ruby_communicator_logger_spec.rb +84 -0
  367. data/spec/lib/logging/stdout_communicator_logger_spec.rb +64 -0
  368. data/spec/lib/logging/value_obfuscator_spec.rb +95 -0
  369. data/spec/lib/meta_data_provider_spec.rb +71 -0
  370. data/spec/lib/payments_client_spec.rb +157 -0
  371. data/spec/lib/requestparams/delete_params_spec.rb +21 -0
  372. data/spec/lib/requestparams/directory_params_spec.rb +27 -0
  373. data/spec/lib/requestparams/find_params_spec.rb +58 -0
  374. data/spec/lib/requestparams/get_params_spec.rb +59 -0
  375. data/spec/lib/requestparams/param_request_spec.rb +57 -0
  376. data/spec/spec_helper.rb +23 -0
  377. metadata +565 -0
@@ -0,0 +1,47 @@
1
+ #
2
+ # This class was auto-generated from the API references found at
3
+ # https://developer.globalcollect.com/documentation/api/server/
4
+ #
5
+ require 'ingenico/connect/sdk/domain/token/abstract_token'
6
+ require 'ingenico/connect/sdk/domain/token/customer_token'
7
+ require 'ingenico/connect/sdk/domain/token/mandate_non_sepa_direct_debit'
8
+
9
+ module Ingenico::Connect::SDK
10
+ module Domain
11
+ module Token
12
+
13
+ # Class {https://developer.globalcollect.com/documentation/api/server/#schema_TokenNonSepaDirectDebit TokenNonSepaDirectDebit}
14
+ class TokenNonSepaDirectDebit < Ingenico::Connect::SDK::Domain::Token::AbstractToken
15
+
16
+ # {Ingenico::Connect::SDK::Domain::Token::CustomerToken}
17
+ attr_accessor :customer
18
+
19
+ # {Ingenico::Connect::SDK::Domain::Token::MandateNonSepaDirectDebit}
20
+ attr_accessor :mandate
21
+
22
+ def to_h
23
+ hash = super
24
+ add_to_hash(hash, 'customer', @customer)
25
+ add_to_hash(hash, 'mandate', @mandate)
26
+ hash
27
+ end
28
+
29
+ def from_hash(hash)
30
+ super
31
+ if hash.has_key?('customer')
32
+ if !(hash['customer'].is_a? Hash)
33
+ raise TypeError, "value '%s' is not a Hash" % [hash['customer']]
34
+ end
35
+ @customer = Ingenico::Connect::SDK::Domain::Token::CustomerToken.new_from_hash(hash['customer'])
36
+ end
37
+ if hash.has_key?('mandate')
38
+ if !(hash['mandate'].is_a? Hash)
39
+ raise TypeError, "value '%s' is not a Hash" % [hash['mandate']]
40
+ end
41
+ @mandate = Ingenico::Connect::SDK::Domain::Token::MandateNonSepaDirectDebit.new_from_hash(hash['mandate'])
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,43 @@
1
+ #
2
+ # This class was auto-generated from the API references found at
3
+ # https://developer.globalcollect.com/documentation/api/server/
4
+ #
5
+ require 'ingenico/connect/sdk/data_object'
6
+ require 'ingenico/connect/sdk/domain/definitions/bank_account_bban'
7
+
8
+ module Ingenico::Connect::SDK
9
+ module Domain
10
+ module Token
11
+
12
+ # Class {https://developer.globalcollect.com/documentation/api/server/#schema_TokenNonSepaDirectDebitPaymentProduct705SpecificData TokenNonSepaDirectDebitPaymentProduct705SpecificData}
13
+ class TokenNonSepaDirectDebitPaymentProduct705SpecificData < Ingenico::Connect::SDK::DataObject
14
+
15
+ # String
16
+ attr_accessor :authorisation_id
17
+
18
+ # {Ingenico::Connect::SDK::Domain::Definitions::BankAccountBban}
19
+ attr_accessor :bank_account_bban
20
+
21
+ def to_h
22
+ hash = super
23
+ add_to_hash(hash, 'authorisationId', @authorisation_id)
24
+ add_to_hash(hash, 'bankAccountBban', @bank_account_bban)
25
+ hash
26
+ end
27
+
28
+ def from_hash(hash)
29
+ super
30
+ if hash.has_key?('authorisationId')
31
+ @authorisation_id = hash['authorisationId']
32
+ end
33
+ if hash.has_key?('bankAccountBban')
34
+ if !(hash['bankAccountBban'].is_a? Hash)
35
+ raise TypeError, "value '%s' is not a Hash" % [hash['bankAccountBban']]
36
+ end
37
+ @bank_account_bban = Ingenico::Connect::SDK::Domain::Definitions::BankAccountBban.new_from_hash(hash['bankAccountBban'])
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,83 @@
1
+ #
2
+ # This class was auto-generated from the API references found at
3
+ # https://developer.globalcollect.com/documentation/api/server/
4
+ #
5
+ require 'ingenico/connect/sdk/data_object'
6
+ require 'ingenico/connect/sdk/domain/token/token_card'
7
+ require 'ingenico/connect/sdk/domain/token/token_e_wallet'
8
+ require 'ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit'
9
+ require 'ingenico/connect/sdk/domain/token/token_sepa_direct_debit'
10
+
11
+ module Ingenico::Connect::SDK
12
+ module Domain
13
+ module Token
14
+
15
+ # Class {https://developer.globalcollect.com/documentation/api/server/#schema_TokenResponse TokenResponse}
16
+ class TokenResponse < Ingenico::Connect::SDK::DataObject
17
+
18
+ # {Ingenico::Connect::SDK::Domain::Token::TokenCard}
19
+ attr_accessor :card
20
+
21
+ # {Ingenico::Connect::SDK::Domain::Token::TokenEWallet}
22
+ attr_accessor :e_wallet
23
+
24
+ # String
25
+ attr_accessor :id
26
+
27
+ # {Ingenico::Connect::SDK::Domain::Token::TokenNonSepaDirectDebit}
28
+ attr_accessor :non_sepa_direct_debit
29
+
30
+ # Integer
31
+ attr_accessor :payment_product_id
32
+
33
+ # {Ingenico::Connect::SDK::Domain::Token::TokenSepaDirectDebit}
34
+ attr_accessor :sepa_direct_debit
35
+
36
+ def to_h
37
+ hash = super
38
+ add_to_hash(hash, 'card', @card)
39
+ add_to_hash(hash, 'eWallet', @e_wallet)
40
+ add_to_hash(hash, 'id', @id)
41
+ add_to_hash(hash, 'nonSepaDirectDebit', @non_sepa_direct_debit)
42
+ add_to_hash(hash, 'paymentProductId', @payment_product_id)
43
+ add_to_hash(hash, 'sepaDirectDebit', @sepa_direct_debit)
44
+ hash
45
+ end
46
+
47
+ def from_hash(hash)
48
+ super
49
+ if hash.has_key?('card')
50
+ if !(hash['card'].is_a? Hash)
51
+ raise TypeError, "value '%s' is not a Hash" % [hash['card']]
52
+ end
53
+ @card = Ingenico::Connect::SDK::Domain::Token::TokenCard.new_from_hash(hash['card'])
54
+ end
55
+ if hash.has_key?('eWallet')
56
+ if !(hash['eWallet'].is_a? Hash)
57
+ raise TypeError, "value '%s' is not a Hash" % [hash['eWallet']]
58
+ end
59
+ @e_wallet = Ingenico::Connect::SDK::Domain::Token::TokenEWallet.new_from_hash(hash['eWallet'])
60
+ end
61
+ if hash.has_key?('id')
62
+ @id = hash['id']
63
+ end
64
+ if hash.has_key?('nonSepaDirectDebit')
65
+ if !(hash['nonSepaDirectDebit'].is_a? Hash)
66
+ raise TypeError, "value '%s' is not a Hash" % [hash['nonSepaDirectDebit']]
67
+ end
68
+ @non_sepa_direct_debit = Ingenico::Connect::SDK::Domain::Token::TokenNonSepaDirectDebit.new_from_hash(hash['nonSepaDirectDebit'])
69
+ end
70
+ if hash.has_key?('paymentProductId')
71
+ @payment_product_id = hash['paymentProductId']
72
+ end
73
+ if hash.has_key?('sepaDirectDebit')
74
+ if !(hash['sepaDirectDebit'].is_a? Hash)
75
+ raise TypeError, "value '%s' is not a Hash" % [hash['sepaDirectDebit']]
76
+ end
77
+ @sepa_direct_debit = Ingenico::Connect::SDK::Domain::Token::TokenSepaDirectDebit.new_from_hash(hash['sepaDirectDebit'])
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,47 @@
1
+ #
2
+ # This class was auto-generated from the API references found at
3
+ # https://developer.globalcollect.com/documentation/api/server/
4
+ #
5
+ require 'ingenico/connect/sdk/domain/token/abstract_token'
6
+ require 'ingenico/connect/sdk/domain/token/customer_token_with_contact_details'
7
+ require 'ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit'
8
+
9
+ module Ingenico::Connect::SDK
10
+ module Domain
11
+ module Token
12
+
13
+ # Class {https://developer.globalcollect.com/documentation/api/server/#schema_TokenSepaDirectDebit TokenSepaDirectDebit}
14
+ class TokenSepaDirectDebit < Ingenico::Connect::SDK::Domain::Token::AbstractToken
15
+
16
+ # {Ingenico::Connect::SDK::Domain::Token::CustomerTokenWithContactDetails}
17
+ attr_accessor :customer
18
+
19
+ # {Ingenico::Connect::SDK::Domain::Token::MandateSepaDirectDebit}
20
+ attr_accessor :mandate
21
+
22
+ def to_h
23
+ hash = super
24
+ add_to_hash(hash, 'customer', @customer)
25
+ add_to_hash(hash, 'mandate', @mandate)
26
+ hash
27
+ end
28
+
29
+ def from_hash(hash)
30
+ super
31
+ if hash.has_key?('customer')
32
+ if !(hash['customer'].is_a? Hash)
33
+ raise TypeError, "value '%s' is not a Hash" % [hash['customer']]
34
+ end
35
+ @customer = Ingenico::Connect::SDK::Domain::Token::CustomerTokenWithContactDetails.new_from_hash(hash['customer'])
36
+ end
37
+ if hash.has_key?('mandate')
38
+ if !(hash['mandate'].is_a? Hash)
39
+ raise TypeError, "value '%s' is not a Hash" % [hash['mandate']]
40
+ end
41
+ @mandate = Ingenico::Connect::SDK::Domain::Token::MandateSepaDirectDebit.new_from_hash(hash['mandate'])
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,47 @@
1
+ #
2
+ # This class was auto-generated from the API references found at
3
+ # https://developer.globalcollect.com/documentation/api/server/
4
+ #
5
+ require 'ingenico/connect/sdk/domain/token/abstract_token'
6
+ require 'ingenico/connect/sdk/domain/token/customer_token_with_contact_details'
7
+ require 'ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit_without_creditor'
8
+
9
+ module Ingenico::Connect::SDK
10
+ module Domain
11
+ module Token
12
+
13
+ # Class {https://developer.globalcollect.com/documentation/api/server/#schema_TokenSepaDirectDebitWithoutCreditor TokenSepaDirectDebitWithoutCreditor}
14
+ class TokenSepaDirectDebitWithoutCreditor < Ingenico::Connect::SDK::Domain::Token::AbstractToken
15
+
16
+ # {Ingenico::Connect::SDK::Domain::Token::CustomerTokenWithContactDetails}
17
+ attr_accessor :customer
18
+
19
+ # {Ingenico::Connect::SDK::Domain::Token::MandateSepaDirectDebitWithoutCreditor}
20
+ attr_accessor :mandate
21
+
22
+ def to_h
23
+ hash = super
24
+ add_to_hash(hash, 'customer', @customer)
25
+ add_to_hash(hash, 'mandate', @mandate)
26
+ hash
27
+ end
28
+
29
+ def from_hash(hash)
30
+ super
31
+ if hash.has_key?('customer')
32
+ if !(hash['customer'].is_a? Hash)
33
+ raise TypeError, "value '%s' is not a Hash" % [hash['customer']]
34
+ end
35
+ @customer = Ingenico::Connect::SDK::Domain::Token::CustomerTokenWithContactDetails.new_from_hash(hash['customer'])
36
+ end
37
+ if hash.has_key?('mandate')
38
+ if !(hash['mandate'].is_a? Hash)
39
+ raise TypeError, "value '%s' is not a Hash" % [hash['mandate']]
40
+ end
41
+ @mandate = Ingenico::Connect::SDK::Domain::Token::MandateSepaDirectDebitWithoutCreditor.new_from_hash(hash['mandate'])
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,76 @@
1
+ #
2
+ # This class was auto-generated from the API references found at
3
+ # https://developer.globalcollect.com/documentation/api/server/
4
+ #
5
+ require 'ingenico/connect/sdk/data_object'
6
+ require 'ingenico/connect/sdk/domain/token/token_card'
7
+ require 'ingenico/connect/sdk/domain/token/token_e_wallet'
8
+ require 'ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit'
9
+ require 'ingenico/connect/sdk/domain/token/token_sepa_direct_debit_without_creditor'
10
+
11
+ module Ingenico::Connect::SDK
12
+ module Domain
13
+ module Token
14
+
15
+ # Class {https://developer.globalcollect.com/documentation/api/server/#schema_UpdateTokenRequest UpdateTokenRequest}
16
+ class UpdateTokenRequest < Ingenico::Connect::SDK::DataObject
17
+
18
+ # {Ingenico::Connect::SDK::Domain::Token::TokenCard}
19
+ attr_accessor :card
20
+
21
+ # {Ingenico::Connect::SDK::Domain::Token::TokenEWallet}
22
+ attr_accessor :e_wallet
23
+
24
+ # {Ingenico::Connect::SDK::Domain::Token::TokenNonSepaDirectDebit}
25
+ attr_accessor :non_sepa_direct_debit
26
+
27
+ # Integer
28
+ attr_accessor :payment_product_id
29
+
30
+ # {Ingenico::Connect::SDK::Domain::Token::TokenSepaDirectDebitWithoutCreditor}
31
+ attr_accessor :sepa_direct_debit
32
+
33
+ def to_h
34
+ hash = super
35
+ add_to_hash(hash, 'card', @card)
36
+ add_to_hash(hash, 'eWallet', @e_wallet)
37
+ add_to_hash(hash, 'nonSepaDirectDebit', @non_sepa_direct_debit)
38
+ add_to_hash(hash, 'paymentProductId', @payment_product_id)
39
+ add_to_hash(hash, 'sepaDirectDebit', @sepa_direct_debit)
40
+ hash
41
+ end
42
+
43
+ def from_hash(hash)
44
+ super
45
+ if hash.has_key?('card')
46
+ if !(hash['card'].is_a? Hash)
47
+ raise TypeError, "value '%s' is not a Hash" % [hash['card']]
48
+ end
49
+ @card = Ingenico::Connect::SDK::Domain::Token::TokenCard.new_from_hash(hash['card'])
50
+ end
51
+ if hash.has_key?('eWallet')
52
+ if !(hash['eWallet'].is_a? Hash)
53
+ raise TypeError, "value '%s' is not a Hash" % [hash['eWallet']]
54
+ end
55
+ @e_wallet = Ingenico::Connect::SDK::Domain::Token::TokenEWallet.new_from_hash(hash['eWallet'])
56
+ end
57
+ if hash.has_key?('nonSepaDirectDebit')
58
+ if !(hash['nonSepaDirectDebit'].is_a? Hash)
59
+ raise TypeError, "value '%s' is not a Hash" % [hash['nonSepaDirectDebit']]
60
+ end
61
+ @non_sepa_direct_debit = Ingenico::Connect::SDK::Domain::Token::TokenNonSepaDirectDebit.new_from_hash(hash['nonSepaDirectDebit'])
62
+ end
63
+ if hash.has_key?('paymentProductId')
64
+ @payment_product_id = hash['paymentProductId']
65
+ end
66
+ if hash.has_key?('sepaDirectDebit')
67
+ if !(hash['sepaDirectDebit'].is_a? Hash)
68
+ raise TypeError, "value '%s' is not a Hash" % [hash['sepaDirectDebit']]
69
+ end
70
+ @sepa_direct_debit = Ingenico::Connect::SDK::Domain::Token::TokenSepaDirectDebitWithoutCreditor.new_from_hash(hash['sepaDirectDebit'])
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,139 @@
1
+ require 'uri'
2
+
3
+ module Ingenico::Connect::SDK
4
+
5
+ # Base class for configuration classes in the SDK.
6
+ # This class stores the following:
7
+ #
8
+ # _api_endpoint_:: Base URL to the GlobalCollect platform, stored as a string.
9
+ # _connect_timeout_:: Timeout in seconds before a connection attempt times out.
10
+ # _socket_timeout_:: Timeout in seconds that occurs after not receiving transmitted data for _socket_timeout_ seconds.
11
+ # _max_connections_:: The number of connections in the connection pool that will be kept alive.
12
+ # _proxy_configuration_:: {Ingenico::Connect::SDK::ProxyConfiguration} containing proxy settings.
13
+ class EndpointConfiguration
14
+ @@DEFAULT_MAX_CONNECTIONS = 10
15
+
16
+ # The default number of connections that are kept alive in the connection pool.
17
+ # Used if _maxConnections_ is not present in the properties.
18
+ def self.DEFAULT_MAX_CONNECTIONS
19
+ @@DEFAULT_MAX_CONNECTIONS
20
+ end
21
+
22
+ # Initializes a new EndpointConfiguration.
23
+ #
24
+ # The given _properties_ is searched for settings using properties.[prefix + '.setting_name']
25
+ # The following settings are searched:
26
+ #
27
+ # endpoint:: This property is searched for *endpoint.host*, *endpoint.scheme* and *endpoint.port*.
28
+ # The found host, scheme and port are used to construct the base URL to the GlobalCollect platform.
29
+ # connectTimeout:: The number of seconds before a connection attempt with the GlobalCollect platform times out.
30
+ # socketTimeout:: The number of seconds before a timeout occurs
31
+ # when transmitting data to or from the GlobalCollect platform.
32
+ # maxConnections:: The number of connections with the GlobalCollect platform
33
+ # that are kept alive in the connection pool. These connections will be reused when possible.
34
+ # proxy:: This property is searched for *proxy.uri*, *proxy.username* and *proxy.password*.
35
+ # The found URI, username and password are used
36
+ # for connecting to the GlobalCollect platform using a proxy.
37
+ # integrator:: String
38
+ # shoppingCartExtension:: Will be used to initialize a {Ingenico::Connect::SDK::Domain::Metadata::ShoppingCartExtension}.
39
+ def initialize(properties=nil, prefix=nil)
40
+ unless properties.nil?
41
+ @api_endpoint = get_endpoint(properties, prefix)
42
+ @connect_timeout = properties[prefix + '.connectTimeout']
43
+ @socket_timeout = properties[prefix + '.socketTimeout']
44
+ @max_connections = get_property(properties, prefix + '.maxConnections',
45
+ @@DEFAULT_MAX_CONNECTIONS)
46
+ proxy_uri = properties[prefix + '.proxy.uri']
47
+ proxy_user = properties[prefix + '.proxy.username']
48
+ proxy_pass = properties[prefix + '.proxy.password']
49
+
50
+ unless proxy_uri.nil?
51
+ @proxy_configuration = ProxyConfiguration.new(address: URI(proxy_uri),
52
+ username: proxy_user,
53
+ password: proxy_pass)
54
+ end
55
+ @integrator = properties[prefix + '.integrator']
56
+ @shopping_cart_extension = get_shopping_cart_extension(properties, prefix)
57
+ end
58
+ end
59
+
60
+ protected
61
+
62
+ def set_endpoint(endpoint)
63
+ if !endpoint.nil? && !endpoint.path.nil?
64
+ raise ArgumentError.new('endpoint should not contain a path')
65
+ end
66
+ if !endpoint.nil? && (!endpoint.userinfo.nil? || !endpoint.query.nil? ||
67
+ !endpoint.fragment.nil?)
68
+ raise ArgumentError('endpoint should not contain user info, query or fragment')
69
+ end
70
+ @api_endpoint = endpoint
71
+ end
72
+
73
+ private
74
+
75
+ def get_property(properties, key, default_value)
76
+ property_value = properties[key]
77
+ if property_value.nil?
78
+ default_value
79
+ else
80
+ property_value
81
+ end
82
+ end
83
+
84
+ def get_endpoint(properties, prefix)
85
+ host = properties[prefix + '.endpoint.host']
86
+ scheme = properties[prefix + '.endpoint.scheme']
87
+ port = properties[prefix + '.endpoint.port']
88
+ if scheme.nil?
89
+ scheme = 'https'
90
+ end
91
+ if port.nil?
92
+ port = -1
93
+ end
94
+ create_uri(scheme, host, port)
95
+ end
96
+
97
+ def create_uri(scheme, host, port)
98
+ if port == -1
99
+ "#{scheme}://#{host}"
100
+ else
101
+ "#{scheme}://#{host}:#{port.to_s}"
102
+ end
103
+ end
104
+
105
+ def get_shopping_cart_extension(properties, prefix)
106
+ creator= properties[prefix + '.shoppingCartExtension.creator']
107
+ name= properties[prefix + '.shoppingCartExtension.name']
108
+ version= properties[prefix + '.shoppingCartExtension.version']
109
+ if creator.nil? && name.nil? && version.nil?
110
+ nil
111
+ else
112
+ Domain::Metadata::ShoppingCartExtension.new(creator, name, version)
113
+ end
114
+ end
115
+
116
+ public
117
+
118
+ # The number of seconds before a connection attempt with the GlobalCollect platform times out.
119
+ attr_accessor :connect_timeout
120
+
121
+ # The number of seconds before a timeout occurs when transmitting data to or from the GlobalCollect platform.
122
+ attr_accessor :socket_timeout
123
+
124
+ # The number of connections with the GlobalCollect platform that are kept alive in the connection pool.
125
+ # These connections will be reused when possible.
126
+ attr_accessor :max_connections
127
+
128
+ # {Ingenico::Connect::SDK::ProxyConfiguration} containing proxy settings.
129
+ attr_accessor :proxy_configuration
130
+
131
+ attr_accessor :integrator
132
+
133
+ # {Ingenico::Connect::SDK::Domain::Metadata::ShoppingCartExtension} containing shopping cart-related metadata.
134
+ attr_accessor :shopping_cart_extension
135
+
136
+ # The base URL to the GlobalCollect platform.
137
+ attr_reader :api_endpoint
138
+ end
139
+ end