connect-sdk-ruby 1.36.0 → 2.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 (462) hide show
  1. checksums.yaml +4 -4
  2. data/connect-sdk-ruby.gemspec +1 -1
  3. data/examples/merchant/captures/get_capture_example.rb +1 -1
  4. data/examples/merchant/disputes/cancel_dispute_example.rb +1 -1
  5. data/examples/merchant/disputes/get_dispute_example.rb +1 -1
  6. data/examples/merchant/disputes/submit_dispute_example.rb +1 -1
  7. data/examples/merchant/disputes/upload_dispute_file_example.rb +30 -0
  8. data/examples/merchant/{products/get_payment_product_public_key_example.rb → files/get_file_example.rb} +7 -1
  9. data/examples/merchant/hostedcheckouts/create_hosted_checkout_example.rb +1 -1
  10. data/examples/merchant/hostedcheckouts/get_hosted_checkout_example.rb +1 -1
  11. data/examples/merchant/hostedmandatemanagements/create_hosted_mandate_management_example.rb +1 -1
  12. data/examples/merchant/hostedmandatemanagements/get_hosted_mandate_management_example.rb +1 -1
  13. data/examples/merchant/mandates/block_mandate_example.rb +1 -1
  14. data/examples/merchant/mandates/create_mandate_example.rb +1 -1
  15. data/examples/merchant/mandates/create_mandate_with_reference_example.rb +1 -1
  16. data/examples/merchant/mandates/get_mandate_example.rb +1 -1
  17. data/examples/merchant/mandates/revoke_mandate_example.rb +1 -1
  18. data/examples/merchant/mandates/unblock_mandate_example.rb +1 -1
  19. data/examples/merchant/payments/approve_payment_example.rb +1 -1
  20. data/examples/merchant/payments/cancel_approval_payment_example.rb +1 -1
  21. data/examples/merchant/payments/cancel_payment_example.rb +1 -1
  22. data/examples/merchant/payments/capture_payment_example.rb +1 -1
  23. data/examples/merchant/payments/complete_payment_example.rb +1 -1
  24. data/examples/merchant/payments/create_payment_dispute_example.rb +1 -1
  25. data/examples/merchant/payments/create_payment_example.rb +3 -3
  26. data/examples/merchant/payments/find_payments_example.rb +1 -1
  27. data/examples/merchant/payments/get_payment_captures_example.rb +1 -1
  28. data/examples/merchant/payments/get_payment_disputes_example.rb +1 -1
  29. data/examples/merchant/payments/get_payment_example.rb +1 -1
  30. data/examples/merchant/payments/get_refunds_example.rb +1 -1
  31. data/examples/merchant/payments/get_third_party_status_example.rb +1 -1
  32. data/examples/merchant/payments/process_challenged_payment_example.rb +1 -1
  33. data/examples/merchant/payments/refund_payment_example.rb +2 -2
  34. data/examples/merchant/payments/tokenize_payment_example.rb +1 -1
  35. data/examples/merchant/payouts/approve_payout_example.rb +1 -1
  36. data/examples/merchant/payouts/cancel_approval_payout_example.rb +1 -1
  37. data/examples/merchant/payouts/cancel_payout_example.rb +1 -1
  38. data/examples/merchant/payouts/create_payout_example.rb +2 -2
  39. data/examples/merchant/payouts/find_payouts_example.rb +1 -1
  40. data/examples/merchant/payouts/get_payout_example.rb +1 -1
  41. data/examples/merchant/productgroups/get_device_fingerprint_for_groups_example.rb +1 -1
  42. data/examples/merchant/productgroups/get_payment_product_group_example.rb +1 -1
  43. data/examples/merchant/productgroups/get_payment_product_groups_example.rb +1 -1
  44. data/examples/merchant/products/get_customer_details_example.rb +1 -1
  45. data/examples/merchant/products/get_device_fingerprint_example.rb +1 -1
  46. data/examples/merchant/products/get_directory_example.rb +1 -1
  47. data/examples/merchant/products/get_networks_example.rb +1 -1
  48. data/examples/merchant/products/get_payment_product_example.rb +1 -1
  49. data/examples/merchant/products/get_payment_products_example.rb +1 -1
  50. data/examples/merchant/refunds/approve_refund_example.rb +1 -1
  51. data/examples/merchant/refunds/cancel_approval_refund_example.rb +1 -1
  52. data/examples/merchant/refunds/cancel_refund_example.rb +1 -1
  53. data/examples/merchant/refunds/find_refunds_example.rb +1 -1
  54. data/examples/merchant/refunds/get_refund_example.rb +1 -1
  55. data/examples/merchant/riskassessments/risk_assessment_bank_account_example.rb +1 -1
  56. data/examples/merchant/riskassessments/risk_assessment_cards_example.rb +1 -1
  57. data/examples/merchant/services/convert_amount_example.rb +1 -1
  58. data/examples/merchant/services/convert_bank_account_example.rb +1 -1
  59. data/examples/merchant/services/get_privacy_policy_example.rb +1 -1
  60. data/examples/merchant/services/iin_details_example.rb +1 -1
  61. data/examples/merchant/services/test_connection_example.rb +1 -1
  62. data/examples/merchant/sessions/create_session_example.rb +1 -1
  63. data/examples/merchant/tokens/approve_sepa_direct_debit_token_example.rb +1 -1
  64. data/examples/merchant/tokens/create_token_example.rb +1 -1
  65. data/examples/merchant/tokens/delete_token_example.rb +1 -1
  66. data/examples/merchant/tokens/get_token_example.rb +1 -1
  67. data/examples/merchant/tokens/update_token_example.rb +1 -1
  68. data/lib/ingenico/connect/sdk.rb +3 -1
  69. data/lib/ingenico/connect/sdk/api_exception.rb +12 -14
  70. data/lib/ingenico/connect/sdk/api_resource.rb +14 -13
  71. data/lib/ingenico/connect/sdk/authenticator.rb +5 -4
  72. data/lib/ingenico/connect/sdk/call_context.rb +6 -6
  73. data/lib/ingenico/connect/sdk/client.rb +12 -11
  74. data/lib/ingenico/connect/sdk/communication_exception.rb +2 -1
  75. data/lib/ingenico/connect/sdk/communicator.rb +331 -128
  76. data/lib/ingenico/connect/sdk/communicator_configuration.rb +21 -39
  77. data/lib/ingenico/connect/sdk/connection.rb +16 -6
  78. data/lib/ingenico/connect/sdk/data_object.rb +2 -13
  79. data/lib/ingenico/connect/sdk/declined_payment_exception.rb +1 -1
  80. data/lib/ingenico/connect/sdk/declined_payout_exception.rb +1 -1
  81. data/lib/ingenico/connect/sdk/declined_refund_exception.rb +1 -1
  82. data/lib/ingenico/connect/sdk/defaultimpl/authorization_type.rb +2 -1
  83. data/lib/ingenico/connect/sdk/defaultimpl/default_authenticator.rb +9 -7
  84. data/lib/ingenico/connect/sdk/defaultimpl/default_connection.rb +212 -68
  85. data/lib/ingenico/connect/sdk/defaultimpl/default_marshaller.rb +2 -2
  86. data/lib/ingenico/connect/sdk/domain/capture/capture.rb +12 -15
  87. data/lib/ingenico/connect/sdk/domain/capture/capture_output.rb +43 -60
  88. data/lib/ingenico/connect/sdk/domain/capture/capture_status_output.rb +4 -3
  89. data/lib/ingenico/connect/sdk/domain/capture/captures_response.rb +5 -6
  90. data/lib/ingenico/connect/sdk/domain/definitions/abstract_order_status.rb +4 -3
  91. data/lib/ingenico/connect/sdk/domain/definitions/abstract_payment_method_specific_input.rb +4 -3
  92. data/lib/ingenico/connect/sdk/domain/definitions/additional_order_input_airline_data.rb +5 -6
  93. data/lib/ingenico/connect/sdk/domain/definitions/address.rb +25 -24
  94. data/lib/ingenico/connect/sdk/domain/definitions/airline_data.rb +76 -79
  95. data/lib/ingenico/connect/sdk/domain/definitions/airline_flight_leg.rb +62 -61
  96. data/lib/ingenico/connect/sdk/domain/definitions/airline_passenger.rb +13 -12
  97. data/lib/ingenico/connect/sdk/domain/definitions/amount_of_money.rb +7 -6
  98. data/lib/ingenico/connect/sdk/domain/definitions/bank_account.rb +4 -3
  99. data/lib/ingenico/connect/sdk/domain/definitions/bank_account_bban.rb +19 -18
  100. data/lib/ingenico/connect/sdk/domain/definitions/bank_account_iban.rb +4 -3
  101. data/lib/ingenico/connect/sdk/domain/definitions/card.rb +4 -3
  102. data/lib/ingenico/connect/sdk/domain/definitions/card_essentials.rb +7 -6
  103. data/lib/ingenico/connect/sdk/domain/definitions/card_fraud_results.rb +15 -18
  104. data/lib/ingenico/connect/sdk/domain/definitions/card_without_cvv.rb +7 -6
  105. data/lib/ingenico/connect/sdk/domain/definitions/company_information.rb +7 -6
  106. data/lib/ingenico/connect/sdk/domain/definitions/contact_details_base.rb +7 -6
  107. data/lib/ingenico/connect/sdk/domain/definitions/customer_base.rb +12 -13
  108. data/lib/ingenico/connect/sdk/domain/definitions/fraud_fields.rb +70 -75
  109. data/lib/ingenico/connect/sdk/domain/definitions/fraud_fields_shipping_details.rb +14 -13
  110. data/lib/ingenico/connect/sdk/domain/definitions/fraud_results.rb +4 -3
  111. data/lib/ingenico/connect/sdk/domain/definitions/fraud_results_retail_decisions.rb +10 -9
  112. data/lib/ingenico/connect/sdk/domain/definitions/fraugster_results.rb +7 -6
  113. data/lib/ingenico/connect/sdk/domain/definitions/key_value_pair.rb +7 -6
  114. data/lib/ingenico/connect/sdk/domain/definitions/order_status_output.rb +17 -18
  115. data/lib/ingenico/connect/sdk/domain/definitions/payment_product_filter.rb +9 -12
  116. data/lib/ingenico/connect/sdk/domain/definitions/personal_name_base.rb +10 -9
  117. data/lib/ingenico/connect/sdk/domain/definitions/redirect_data_base.rb +7 -6
  118. data/lib/ingenico/connect/sdk/domain/definitions/result_do_risk_assessment.rb +15 -18
  119. data/lib/ingenico/connect/sdk/domain/definitions/retail_decisions_cc_fraud_check_output.rb +10 -9
  120. data/lib/ingenico/connect/sdk/domain/definitions/validation_bank_account_check.rb +10 -9
  121. data/lib/ingenico/connect/sdk/domain/definitions/validation_bank_account_output.rb +17 -18
  122. data/lib/ingenico/connect/sdk/domain/dispute/create_dispute_request.rb +17 -18
  123. data/lib/ingenico/connect/sdk/domain/dispute/dispute.rb +18 -21
  124. data/lib/ingenico/connect/sdk/domain/dispute/dispute_creation_detail.rb +10 -9
  125. data/lib/ingenico/connect/sdk/domain/dispute/dispute_output.rb +32 -39
  126. data/lib/ingenico/connect/sdk/domain/dispute/dispute_reference.rb +16 -15
  127. data/lib/ingenico/connect/sdk/domain/dispute/dispute_status_output.rb +13 -12
  128. data/lib/ingenico/connect/sdk/domain/dispute/disputes_response.rb +5 -6
  129. data/lib/ingenico/connect/sdk/domain/dispute/upload_dispute_file_response.rb +39 -0
  130. data/lib/ingenico/connect/sdk/domain/errors/api_error.rb +22 -21
  131. data/lib/ingenico/connect/sdk/domain/errors/error_response.rb +8 -9
  132. data/lib/ingenico/connect/sdk/domain/file/hosted_file.rb +13 -12
  133. data/lib/ingenico/connect/sdk/domain/hostedcheckout/create_hosted_checkout_request.rb +45 -66
  134. data/lib/ingenico/connect/sdk/domain/hostedcheckout/create_hosted_checkout_response.rb +17 -18
  135. data/lib/ingenico/connect/sdk/domain/hostedcheckout/created_payment_output.rb +23 -28
  136. data/lib/ingenico/connect/sdk/domain/hostedcheckout/displayed_data.rb +11 -12
  137. data/lib/ingenico/connect/sdk/domain/hostedcheckout/get_hosted_checkout_response.rb +8 -9
  138. data/lib/ingenico/connect/sdk/domain/hostedcheckout/hosted_checkout_specific_input.rb +29 -30
  139. data/lib/ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_method_specific_input_hosted_checkout.rb +5 -6
  140. data/lib/ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_product320_specific_input_hosted_checkout.rb +7 -6
  141. data/lib/ingenico/connect/sdk/domain/hostedcheckout/payment_product_filters_hosted_checkout.rb +12 -15
  142. data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/create_hosted_mandate_management_request.rb +9 -12
  143. data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/create_hosted_mandate_management_response.rb +10 -9
  144. data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/get_hosted_mandate_management_response.rb +8 -9
  145. data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/hosted_mandate_info.rb +20 -21
  146. data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/hosted_mandate_management_specific_input.rb +13 -12
  147. data/lib/ingenico/connect/sdk/domain/mandates/create_mandate_base.rb +23 -24
  148. data/lib/ingenico/connect/sdk/domain/mandates/create_mandate_response.rb +9 -12
  149. data/lib/ingenico/connect/sdk/domain/mandates/create_mandate_with_return_url.rb +4 -3
  150. data/lib/ingenico/connect/sdk/domain/mandates/get_mandate_response.rb +5 -6
  151. data/lib/ingenico/connect/sdk/domain/mandates/mandate_address.rb +16 -15
  152. data/lib/ingenico/connect/sdk/domain/mandates/mandate_contact_details.rb +4 -3
  153. data/lib/ingenico/connect/sdk/domain/mandates/mandate_customer.rb +20 -27
  154. data/lib/ingenico/connect/sdk/domain/mandates/mandate_merchant_action.rb +8 -9
  155. data/lib/ingenico/connect/sdk/domain/mandates/mandate_personal_information.rb +8 -9
  156. data/lib/ingenico/connect/sdk/domain/mandates/mandate_personal_name.rb +7 -6
  157. data/lib/ingenico/connect/sdk/domain/mandates/mandate_response.rb +20 -21
  158. data/lib/ingenico/connect/sdk/domain/metadata/shopping_cart_extension.rb +8 -8
  159. data/lib/ingenico/connect/sdk/domain/payment/abstract_bank_transfer_payment_method_specific_input.rb +4 -3
  160. data/lib/ingenico/connect/sdk/domain/payment/abstract_card_payment_method_specific_input.rb +44 -45
  161. data/lib/ingenico/connect/sdk/domain/payment/abstract_e_invoice_payment_method_specific_input.rb +4 -3
  162. data/lib/ingenico/connect/sdk/domain/payment/abstract_payment_method_specific_output.rb +4 -3
  163. data/lib/ingenico/connect/sdk/domain/payment/abstract_redirect_payment_method_specific_input.rb +16 -15
  164. data/lib/ingenico/connect/sdk/domain/payment/abstract_redirect_payment_product840_specific_input.rb +4 -3
  165. data/lib/ingenico/connect/sdk/domain/payment/abstract_sepa_direct_debit_payment_product771_specific_input.rb +5 -4
  166. data/lib/ingenico/connect/sdk/domain/payment/abstract_three_d_secure.rb +21 -24
  167. data/lib/ingenico/connect/sdk/domain/payment/additional_order_input.rb +20 -25
  168. data/lib/ingenico/connect/sdk/domain/payment/address_personal.rb +5 -6
  169. data/lib/ingenico/connect/sdk/domain/payment/amount_breakdown.rb +7 -6
  170. data/lib/ingenico/connect/sdk/domain/payment/approve_payment_card_payment_method_specific_output.rb +4 -3
  171. data/lib/ingenico/connect/sdk/domain/payment/approve_payment_mobile_payment_method_specific_output.rb +4 -3
  172. data/lib/ingenico/connect/sdk/domain/payment/approve_payment_payment_method_specific_input.rb +7 -6
  173. data/lib/ingenico/connect/sdk/domain/payment/approve_payment_request.rb +16 -21
  174. data/lib/ingenico/connect/sdk/domain/payment/browser_data.rb +22 -21
  175. data/lib/ingenico/connect/sdk/domain/payment/cancel_approval_payment_response.rb +5 -6
  176. data/lib/ingenico/connect/sdk/domain/payment/cancel_payment_card_payment_method_specific_output.rb +4 -3
  177. data/lib/ingenico/connect/sdk/domain/payment/cancel_payment_mobile_payment_method_specific_output.rb +4 -3
  178. data/lib/ingenico/connect/sdk/domain/payment/cancel_payment_response.rb +13 -18
  179. data/lib/ingenico/connect/sdk/domain/payment/capture_payment_request.rb +7 -6
  180. data/lib/ingenico/connect/sdk/domain/payment/card_payment_method_specific_input.rb +21 -26
  181. data/lib/ingenico/connect/sdk/domain/payment/card_payment_method_specific_input_base.rb +5 -6
  182. data/lib/ingenico/connect/sdk/domain/payment/card_payment_method_specific_output.rb +19 -24
  183. data/lib/ingenico/connect/sdk/domain/payment/card_recurrence_details.rb +10 -9
  184. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_method_specific_input.rb +30 -43
  185. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1503_specific_input.rb +6 -5
  186. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1504_specific_input.rb +4 -3
  187. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1521_specific_input.rb +4 -3
  188. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1522_specific_input.rb +4 -3
  189. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1523_specific_input.rb +4 -3
  190. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1524_specific_input.rb +4 -3
  191. data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1526_specific_input.rb +4 -3
  192. data/lib/ingenico/connect/sdk/domain/payment/complete_payment_card_payment_method_specific_input.rb +5 -6
  193. data/lib/ingenico/connect/sdk/domain/payment/complete_payment_request.rb +13 -18
  194. data/lib/ingenico/connect/sdk/domain/payment/contact_details.rb +13 -12
  195. data/lib/ingenico/connect/sdk/domain/payment/create_payment_request.rb +52 -75
  196. data/lib/ingenico/connect/sdk/domain/payment/create_payment_result.rb +13 -18
  197. data/lib/ingenico/connect/sdk/domain/payment/customer.rb +38 -49
  198. data/lib/ingenico/connect/sdk/domain/payment/customer_account.rb +40 -45
  199. data/lib/ingenico/connect/sdk/domain/payment/customer_account_authentication.rb +7 -6
  200. data/lib/ingenico/connect/sdk/domain/payment/customer_approve_payment.rb +4 -3
  201. data/lib/ingenico/connect/sdk/domain/payment/customer_device.rb +26 -27
  202. data/lib/ingenico/connect/sdk/domain/payment/customer_payment_activity.rb +10 -9
  203. data/lib/ingenico/connect/sdk/domain/payment/decrypted_payment_data.rb +22 -21
  204. data/lib/ingenico/connect/sdk/domain/payment/device_render_options.rb +7 -6
  205. data/lib/ingenico/connect/sdk/domain/payment/e_invoice_payment_method_specific_input.rb +8 -9
  206. data/lib/ingenico/connect/sdk/domain/payment/e_invoice_payment_method_specific_output.rb +5 -6
  207. data/lib/ingenico/connect/sdk/domain/payment/e_invoice_payment_product9000_specific_input.rb +8 -9
  208. data/lib/ingenico/connect/sdk/domain/payment/e_invoice_payment_product9000_specific_output.rb +4 -3
  209. data/lib/ingenico/connect/sdk/domain/payment/external_cardholder_authentication_data.rb +25 -24
  210. data/lib/ingenico/connect/sdk/domain/payment/find_payments_response.rb +14 -15
  211. data/lib/ingenico/connect/sdk/domain/payment/gift_card_purchase.rb +8 -9
  212. data/lib/ingenico/connect/sdk/domain/payment/hosted_checkout_specific_output.rb +7 -6
  213. data/lib/ingenico/connect/sdk/domain/payment/invoice_payment_method_specific_input.rb +4 -3
  214. data/lib/ingenico/connect/sdk/domain/payment/level3_summary_data.rb +14 -13
  215. data/lib/ingenico/connect/sdk/domain/payment/line_item.rb +18 -25
  216. data/lib/ingenico/connect/sdk/domain/payment/line_item_invoice_data.rb +16 -15
  217. data/lib/ingenico/connect/sdk/domain/payment/line_item_level3_interchange_information.rb +25 -24
  218. data/lib/ingenico/connect/sdk/domain/payment/merchant.rb +11 -12
  219. data/lib/ingenico/connect/sdk/domain/payment/merchant_action.rb +27 -36
  220. data/lib/ingenico/connect/sdk/domain/payment/mobile_payment_data.rb +7 -6
  221. data/lib/ingenico/connect/sdk/domain/payment/mobile_payment_method_specific_input.rb +17 -18
  222. data/lib/ingenico/connect/sdk/domain/payment/mobile_payment_method_specific_output.rb +19 -24
  223. data/lib/ingenico/connect/sdk/domain/payment/mobile_three_d_secure_challenge_parameters.rb +13 -12
  224. data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_method_specific_input.rb +27 -30
  225. data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_method_specific_output.rb +5 -6
  226. data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_product705_specific_input.rb +11 -12
  227. data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_product730_specific_input.rb +5 -6
  228. data/lib/ingenico/connect/sdk/domain/payment/order.rb +35 -50
  229. data/lib/ingenico/connect/sdk/domain/payment/order_approve_payment.rb +13 -18
  230. data/lib/ingenico/connect/sdk/domain/payment/order_invoice_data.rb +14 -15
  231. data/lib/ingenico/connect/sdk/domain/payment/order_line_details.rb +34 -33
  232. data/lib/ingenico/connect/sdk/domain/payment/order_output.rb +9 -12
  233. data/lib/ingenico/connect/sdk/domain/payment/order_references.rb +14 -15
  234. data/lib/ingenico/connect/sdk/domain/payment/order_references_approve_payment.rb +4 -3
  235. data/lib/ingenico/connect/sdk/domain/payment/order_type_information.rb +10 -9
  236. data/lib/ingenico/connect/sdk/domain/payment/payment.rb +16 -21
  237. data/lib/ingenico/connect/sdk/domain/payment/payment_account_on_file.rb +7 -6
  238. data/lib/ingenico/connect/sdk/domain/payment/payment_approval_response.rb +18 -25
  239. data/lib/ingenico/connect/sdk/domain/payment/payment_creation_output.rb +10 -9
  240. data/lib/ingenico/connect/sdk/domain/payment/payment_creation_references.rb +7 -6
  241. data/lib/ingenico/connect/sdk/domain/payment/payment_error_response.rb +12 -15
  242. data/lib/ingenico/connect/sdk/domain/payment/payment_output.rb +43 -60
  243. data/lib/ingenico/connect/sdk/domain/payment/payment_product3201_specific_output.rb +5 -6
  244. data/lib/ingenico/connect/sdk/domain/payment/payment_product771_specific_output.rb +4 -3
  245. data/lib/ingenico/connect/sdk/domain/payment/payment_product836_specific_output.rb +4 -3
  246. data/lib/ingenico/connect/sdk/domain/payment/payment_product840_customer_account.rb +31 -30
  247. data/lib/ingenico/connect/sdk/domain/payment/payment_product840_specific_output.rb +13 -18
  248. data/lib/ingenico/connect/sdk/domain/payment/payment_product863_third_party_data.rb +22 -21
  249. data/lib/ingenico/connect/sdk/domain/payment/payment_references.rb +19 -18
  250. data/lib/ingenico/connect/sdk/domain/payment/payment_status_output.rb +10 -9
  251. data/lib/ingenico/connect/sdk/domain/payment/personal_information.rb +11 -12
  252. data/lib/ingenico/connect/sdk/domain/payment/personal_name.rb +4 -3
  253. data/lib/ingenico/connect/sdk/domain/payment/protection_eligibility.rb +7 -6
  254. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_input.rb +36 -49
  255. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_input_base.rb +5 -6
  256. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_output.rb +24 -33
  257. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product809_specific_input.rb +8 -7
  258. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product816_specific_input.rb +5 -6
  259. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product840_specific_input.rb +8 -7
  260. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product861_specific_input.rb +4 -3
  261. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product863_specific_input.rb +7 -6
  262. data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product882_specific_input.rb +4 -3
  263. data/lib/ingenico/connect/sdk/domain/payment/redirection_data.rb +7 -6
  264. data/lib/ingenico/connect/sdk/domain/payment/refund_e_wallet_method_specific_output.rb +5 -6
  265. data/lib/ingenico/connect/sdk/domain/payment/refund_method_specific_output.rb +7 -6
  266. data/lib/ingenico/connect/sdk/domain/payment/refund_mobile_method_specific_output.rb +4 -3
  267. data/lib/ingenico/connect/sdk/domain/payment/refund_output.rb +27 -36
  268. data/lib/ingenico/connect/sdk/domain/payment/refund_payment_product840_customer_account.rb +10 -9
  269. data/lib/ingenico/connect/sdk/domain/payment/refund_payment_product840_specific_output.rb +5 -6
  270. data/lib/ingenico/connect/sdk/domain/payment/sdk_data_input.rb +26 -27
  271. data/lib/ingenico/connect/sdk/domain/payment/sdk_data_output.rb +4 -3
  272. data/lib/ingenico/connect/sdk/domain/payment/seller.rb +29 -30
  273. data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_method_specific_input.rb +23 -24
  274. data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_method_specific_input_base.rb +5 -6
  275. data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_method_specific_output.rb +9 -12
  276. data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_product771_specific_input.rb +8 -9
  277. data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_product771_specific_input_base.rb +8 -9
  278. data/lib/ingenico/connect/sdk/domain/payment/shipping.rb +26 -27
  279. data/lib/ingenico/connect/sdk/domain/payment/shopping_cart.rb +22 -27
  280. data/lib/ingenico/connect/sdk/domain/payment/third_party_data.rb +5 -6
  281. data/lib/ingenico/connect/sdk/domain/payment/third_party_status_response.rb +4 -3
  282. data/lib/ingenico/connect/sdk/domain/payment/three_d_secure.rb +9 -12
  283. data/lib/ingenico/connect/sdk/domain/payment/three_d_secure_data.rb +10 -9
  284. data/lib/ingenico/connect/sdk/domain/payment/three_d_secure_results.rb +27 -30
  285. data/lib/ingenico/connect/sdk/domain/payment/tokenize_payment_request.rb +4 -3
  286. data/lib/ingenico/connect/sdk/domain/payout/approve_payout_request.rb +4 -3
  287. data/lib/ingenico/connect/sdk/domain/payout/bank_transfer_payout_method_specific_input.rb +22 -27
  288. data/lib/ingenico/connect/sdk/domain/payout/card_payout_method_specific_input.rb +11 -12
  289. data/lib/ingenico/connect/sdk/domain/payout/create_payout_request.rb +44 -57
  290. data/lib/ingenico/connect/sdk/domain/payout/find_payouts_response.rb +14 -15
  291. data/lib/ingenico/connect/sdk/domain/payout/payout_customer.rb +20 -27
  292. data/lib/ingenico/connect/sdk/domain/payout/payout_error_response.rb +12 -15
  293. data/lib/ingenico/connect/sdk/domain/payout/payout_references.rb +10 -9
  294. data/lib/ingenico/connect/sdk/domain/payout/payout_result.rb +12 -15
  295. data/lib/ingenico/connect/sdk/domain/product/abstract_indicator.rb +7 -6
  296. data/lib/ingenico/connect/sdk/domain/product/account_on_file.rb +15 -18
  297. data/lib/ingenico/connect/sdk/domain/product/account_on_file_attribute.rb +7 -6
  298. data/lib/ingenico/connect/sdk/domain/product/account_on_file_display_hints.rb +8 -9
  299. data/lib/ingenico/connect/sdk/domain/product/boleto_bancario_requiredness_validator.rb +4 -3
  300. data/lib/ingenico/connect/sdk/domain/product/device_fingerprint_request.rb +4 -3
  301. data/lib/ingenico/connect/sdk/domain/product/device_fingerprint_response.rb +7 -6
  302. data/lib/ingenico/connect/sdk/domain/product/directory.rb +5 -6
  303. data/lib/ingenico/connect/sdk/domain/product/directory_entry.rb +14 -15
  304. data/lib/ingenico/connect/sdk/domain/product/fixed_list_validator.rb +5 -6
  305. data/lib/ingenico/connect/sdk/domain/product/get_customer_details_request.rb +8 -9
  306. data/lib/ingenico/connect/sdk/domain/product/get_customer_details_response.rb +31 -30
  307. data/lib/ingenico/connect/sdk/domain/product/label_template_element.rb +7 -6
  308. data/lib/ingenico/connect/sdk/domain/product/length_validator.rb +7 -6
  309. data/lib/ingenico/connect/sdk/domain/product/payment_product.rb +71 -84
  310. data/lib/ingenico/connect/sdk/domain/product/payment_product302_specific_data.rb +5 -6
  311. data/lib/ingenico/connect/sdk/domain/product/payment_product320_specific_data.rb +8 -9
  312. data/lib/ingenico/connect/sdk/domain/product/payment_product863_specific_data.rb +5 -6
  313. data/lib/ingenico/connect/sdk/domain/product/payment_product_display_hints.rb +10 -9
  314. data/lib/ingenico/connect/sdk/domain/product/payment_product_field.rb +18 -21
  315. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_data_restrictions.rb +8 -9
  316. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_display_element.rb +13 -12
  317. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_display_hints.rb +33 -36
  318. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_form_element.rb +8 -9
  319. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_tooltip.rb +7 -6
  320. data/lib/ingenico/connect/sdk/domain/product/payment_product_field_validators.rb +41 -60
  321. data/lib/ingenico/connect/sdk/domain/product/payment_product_group.rb +19 -24
  322. data/lib/ingenico/connect/sdk/domain/product/payment_product_groups.rb +5 -6
  323. data/lib/ingenico/connect/sdk/domain/product/payment_product_networks_response.rb +5 -6
  324. data/lib/ingenico/connect/sdk/domain/product/payment_products.rb +5 -6
  325. data/lib/ingenico/connect/sdk/domain/product/range_validator.rb +7 -6
  326. data/lib/ingenico/connect/sdk/domain/product/regular_expression_validator.rb +4 -3
  327. data/lib/ingenico/connect/sdk/domain/product/value_mapping_element.rb +12 -13
  328. data/lib/ingenico/connect/sdk/domain/refund/approve_refund_request.rb +4 -3
  329. data/lib/ingenico/connect/sdk/domain/refund/bank_account_bban_refund.rb +10 -9
  330. data/lib/ingenico/connect/sdk/domain/refund/bank_refund_method_specific_input.rb +12 -15
  331. data/lib/ingenico/connect/sdk/domain/refund/find_refunds_response.rb +14 -15
  332. data/lib/ingenico/connect/sdk/domain/refund/refund_customer.rb +16 -21
  333. data/lib/ingenico/connect/sdk/domain/refund/refund_error_response.rb +12 -15
  334. data/lib/ingenico/connect/sdk/domain/refund/refund_references.rb +4 -3
  335. data/lib/ingenico/connect/sdk/domain/refund/refund_request.rb +20 -27
  336. data/lib/ingenico/connect/sdk/domain/refund/refund_result.rb +12 -15
  337. data/lib/ingenico/connect/sdk/domain/refund/refunds_response.rb +5 -6
  338. data/lib/ingenico/connect/sdk/domain/riskassessments/contact_details_risk_assessment.rb +4 -3
  339. data/lib/ingenico/connect/sdk/domain/riskassessments/customer_account_risk_assessment.rb +7 -6
  340. data/lib/ingenico/connect/sdk/domain/riskassessments/customer_device_risk_assessment.rb +7 -6
  341. data/lib/ingenico/connect/sdk/domain/riskassessments/customer_risk_assessment.rb +35 -46
  342. data/lib/ingenico/connect/sdk/domain/riskassessments/merchant_risk_assessment.rb +4 -3
  343. data/lib/ingenico/connect/sdk/domain/riskassessments/order_risk_assessment.rb +17 -24
  344. data/lib/ingenico/connect/sdk/domain/riskassessments/personal_information_risk_assessment.rb +5 -6
  345. data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment.rb +16 -21
  346. data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment_bank_account.rb +9 -12
  347. data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment_card.rb +5 -6
  348. data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment_response.rb +5 -6
  349. data/lib/ingenico/connect/sdk/domain/riskassessments/shipping_risk_assessment.rb +11 -12
  350. data/lib/ingenico/connect/sdk/domain/services/bank_data.rb +13 -12
  351. data/lib/ingenico/connect/sdk/domain/services/bank_details.rb +9 -12
  352. data/lib/ingenico/connect/sdk/domain/services/bank_details_response.rb +17 -24
  353. data/lib/ingenico/connect/sdk/domain/services/convert_amount.rb +4 -3
  354. data/lib/ingenico/connect/sdk/domain/services/get_iin_details_request.rb +8 -9
  355. data/lib/ingenico/connect/sdk/domain/services/get_iin_details_response.rb +14 -15
  356. data/lib/ingenico/connect/sdk/domain/services/get_privacy_policy_response.rb +4 -3
  357. data/lib/ingenico/connect/sdk/domain/services/iin_detail.rb +7 -6
  358. data/lib/ingenico/connect/sdk/domain/services/payment_context.rb +11 -12
  359. data/lib/ingenico/connect/sdk/domain/services/swift.rb +31 -30
  360. data/lib/ingenico/connect/sdk/domain/services/test_connection.rb +4 -3
  361. data/lib/ingenico/connect/sdk/domain/sessions/payment_product_filters_client_session.rb +9 -12
  362. data/lib/ingenico/connect/sdk/domain/sessions/session_request.rb +9 -12
  363. data/lib/ingenico/connect/sdk/domain/sessions/session_response.rb +20 -21
  364. data/lib/ingenico/connect/sdk/domain/token/abstract_token.rb +4 -3
  365. data/lib/ingenico/connect/sdk/domain/token/create_token_request.rb +20 -27
  366. data/lib/ingenico/connect/sdk/domain/token/create_token_response.rb +7 -6
  367. data/lib/ingenico/connect/sdk/domain/token/creditor.rb +34 -33
  368. data/lib/ingenico/connect/sdk/domain/token/customer_token.rb +9 -12
  369. data/lib/ingenico/connect/sdk/domain/token/customer_token_with_contact_details.rb +5 -6
  370. data/lib/ingenico/connect/sdk/domain/token/debtor.rb +34 -33
  371. data/lib/ingenico/connect/sdk/domain/token/mandate_approval.rb +10 -9
  372. data/lib/ingenico/connect/sdk/domain/token/mandate_non_sepa_direct_debit.rb +9 -12
  373. data/lib/ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit.rb +5 -6
  374. data/lib/ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit_with_mandate_id.rb +4 -3
  375. data/lib/ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit_without_creditor.rb +22 -27
  376. data/lib/ingenico/connect/sdk/domain/token/personal_information_token.rb +5 -6
  377. data/lib/ingenico/connect/sdk/domain/token/token_card.rb +9 -12
  378. data/lib/ingenico/connect/sdk/domain/token/token_card_data.rb +11 -12
  379. data/lib/ingenico/connect/sdk/domain/token/token_e_wallet.rb +9 -12
  380. data/lib/ingenico/connect/sdk/domain/token/token_e_wallet_data.rb +4 -3
  381. data/lib/ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit.rb +9 -12
  382. data/lib/ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit_payment_product705_specific_data.rb +8 -9
  383. data/lib/ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit_payment_product730_specific_data.rb +5 -6
  384. data/lib/ingenico/connect/sdk/domain/token/token_response.rb +23 -30
  385. data/lib/ingenico/connect/sdk/domain/token/token_sepa_direct_debit.rb +9 -12
  386. data/lib/ingenico/connect/sdk/domain/token/token_sepa_direct_debit_without_creditor.rb +9 -12
  387. data/lib/ingenico/connect/sdk/domain/token/update_token_request.rb +20 -27
  388. data/lib/ingenico/connect/sdk/endpoint_configuration.rb +12 -20
  389. data/lib/ingenico/connect/sdk/factory.rb +34 -32
  390. data/lib/ingenico/connect/sdk/idempotence_exception.rb +3 -3
  391. data/lib/ingenico/connect/sdk/logging/communicator_logger.rb +5 -2
  392. data/lib/ingenico/connect/sdk/logging/log_message_builder.rb +25 -13
  393. data/lib/ingenico/connect/sdk/logging/logging_util.rb +14 -14
  394. data/lib/ingenico/connect/sdk/logging/request_log_message_builder.rb +4 -5
  395. data/lib/ingenico/connect/sdk/logging/response_log_message_builder.rb +7 -6
  396. data/lib/ingenico/connect/sdk/logging/ruby_communicator_logger.rb +5 -4
  397. data/lib/ingenico/connect/sdk/logging/stdout_communicator_logger.rb +2 -1
  398. data/lib/ingenico/connect/sdk/marshaller.rb +8 -3
  399. data/lib/ingenico/connect/sdk/merchant/captures/captures_client.rb +17 -17
  400. data/lib/ingenico/connect/sdk/merchant/disputes/disputes_client.rb +80 -47
  401. data/lib/ingenico/connect/sdk/merchant/disputes/upload_file_request.rb +27 -0
  402. data/lib/ingenico/connect/sdk/merchant/files/files_client.rb +55 -0
  403. data/lib/ingenico/connect/sdk/merchant/hostedcheckouts/hostedcheckouts_client.rb +31 -31
  404. data/lib/ingenico/connect/sdk/merchant/hostedmandatemanagements/hostedmandatemanagements_client.rb +31 -31
  405. data/lib/ingenico/connect/sdk/merchant/mandates/mandates_client.rb +92 -92
  406. data/lib/ingenico/connect/sdk/merchant/merchant_client.rb +37 -30
  407. data/lib/ingenico/connect/sdk/merchant/payments/find_payments_params.rb +12 -11
  408. data/lib/ingenico/connect/sdk/merchant/payments/payments_client.rb +248 -248
  409. data/lib/ingenico/connect/sdk/merchant/payouts/find_payouts_params.rb +10 -9
  410. data/lib/ingenico/connect/sdk/merchant/payouts/payouts_client.rb +90 -90
  411. data/lib/ingenico/connect/sdk/merchant/productgroups/find_productgroups_params.rb +17 -13
  412. data/lib/ingenico/connect/sdk/merchant/productgroups/get_productgroup_params.rb +17 -13
  413. data/lib/ingenico/connect/sdk/merchant/productgroups/productgroups_client.rb +48 -48
  414. data/lib/ingenico/connect/sdk/merchant/products/directory_params.rb +6 -5
  415. data/lib/ingenico/connect/sdk/merchant/products/find_products_params.rb +17 -13
  416. data/lib/ingenico/connect/sdk/merchant/products/get_product_params.rb +19 -15
  417. data/lib/ingenico/connect/sdk/merchant/products/networks_params.rb +10 -9
  418. data/lib/ingenico/connect/sdk/merchant/products/products_client.rb +96 -127
  419. data/lib/ingenico/connect/sdk/merchant/refunds/find_refunds_params.rb +12 -11
  420. data/lib/ingenico/connect/sdk/merchant/refunds/refunds_client.rb +74 -74
  421. data/lib/ingenico/connect/sdk/merchant/riskassessments/riskassessments_client.rb +30 -30
  422. data/lib/ingenico/connect/sdk/merchant/services/convert_amount_params.rb +8 -7
  423. data/lib/ingenico/connect/sdk/merchant/services/privacypolicy_params.rb +6 -5
  424. data/lib/ingenico/connect/sdk/merchant/services/services_client.rb +71 -71
  425. data/lib/ingenico/connect/sdk/merchant/sessions/sessions_client.rb +16 -16
  426. data/lib/ingenico/connect/sdk/merchant/tokens/delete_token_params.rb +4 -3
  427. data/lib/ingenico/connect/sdk/merchant/tokens/tokens_client.rb +76 -76
  428. data/lib/ingenico/connect/sdk/meta_data_provider.rb +19 -20
  429. data/lib/ingenico/connect/sdk/modules.rb +5 -4
  430. data/lib/ingenico/connect/sdk/multipart_form_data_object.rb +44 -0
  431. data/lib/ingenico/connect/sdk/multipart_form_data_request.rb +9 -0
  432. data/lib/ingenico/connect/sdk/not_found_exception.rb +4 -7
  433. data/lib/ingenico/connect/sdk/param_request.rb +3 -25
  434. data/lib/ingenico/connect/sdk/proxy_configuration.rb +16 -17
  435. data/lib/ingenico/connect/sdk/request_header.rb +22 -3
  436. data/lib/ingenico/connect/sdk/request_param.rb +3 -2
  437. data/lib/ingenico/connect/sdk/response_exception.rb +24 -27
  438. data/lib/ingenico/connect/sdk/response_header.rb +49 -2
  439. data/lib/ingenico/connect/sdk/session.rb +11 -10
  440. data/lib/ingenico/connect/sdk/uploadable_file.rb +30 -0
  441. data/lib/ingenico/connect/sdk/webhooks/api_version_mismatch_exception.rb +3 -3
  442. data/lib/ingenico/connect/sdk/webhooks/in_memory_secret_key_store.rb +5 -5
  443. data/lib/ingenico/connect/sdk/webhooks/secret_key_not_available_exception.rb +2 -0
  444. data/lib/ingenico/connect/sdk/webhooks/secret_key_store.rb +2 -2
  445. data/lib/ingenico/connect/sdk/webhooks/signature_validation_exception.rb +1 -1
  446. data/lib/ingenico/connect/sdk/webhooks/webhooks_event.rb +19 -25
  447. data/lib/ingenico/connect/sdk/webhooks/webhooks_helper.rb +11 -10
  448. data/spec/integration/multipart_form_data_spec.rb +214 -0
  449. data/spec/lib/defaultimpl/default_connection_idempotence_spec.rb +7 -7
  450. data/spec/lib/defaultimpl/default_connection_logger_spec.rb +0 -4
  451. data/spec/lib/defaultimpl/default_connection_spec.rb +48 -25
  452. data/spec/lib/logging/header_obfuscator_spec.rb +1 -1
  453. data/spec/lib/logging/logging_util_spec.rb +7 -7
  454. data/spec/lib/logging/obfuscator_spec.rb +4 -4
  455. data/spec/lib/logging/ruby_communicator_logger_spec.rb +8 -8
  456. data/spec/lib/logging/stdout_communicator_logger_spec.rb +1 -1
  457. data/spec/lib/logging/value_obfuscator_spec.rb +1 -1
  458. data/spec/lib/payments_client_spec.rb +8 -9
  459. metadata +12 -7
  460. data/lib/ingenico/connect/sdk/domain/publickey/public_key.rb +0 -38
  461. data/lib/ingenico/connect/sdk/response.rb +0 -59
  462. data/spec/lib/requestparams/param_request_spec.rb +0 -57
@@ -6,8 +6,8 @@ module Ingenico::Connect::SDK
6
6
 
7
7
  # Retrieve secret key for given key id
8
8
  #
9
- # key_id:: given key id
10
- # Raises {Ingenico::Connect::SDK::Webhooks::SecretKeyNotAvailableException} if the secret key for the given key id is not available.
9
+ # @param key_id [String] key id of the secret key
10
+ # @raise [Ingenico::Connect::SDK::Webhooks::SecretKeyNotAvailableException] if the secret key for the given key id is not available.
11
11
  def get_secret_key(key_id)
12
12
  raise NotImplementedError
13
13
  end
@@ -7,7 +7,7 @@ module Ingenico::Connect::SDK
7
7
  # Creates a new SignatureValidationException
8
8
  #
9
9
  # @param [Hash] args the options to create the Exception with
10
- # @option args [String] :message the error message
10
+ # @option args [String] :message the error message
11
11
  # @option args [RuntimeError] :cause an Error object that causes the Exception
12
12
  def initialize(args)
13
13
  super(args[:message]) # NOTE: can be nil
@@ -1,46 +1,40 @@
1
1
  module Ingenico::Connect::SDK
2
2
  module Webhooks
3
3
 
4
+ # @attr [String] api_version
5
+ # @attr [String] id
6
+ # @attr [String] created
7
+ # @attr [String] merchant_id
8
+ # @attr [String] type
9
+ # @attr [Ingenico::Connect::SDK::Domain::Payment::PaymentResponse] payment
10
+ # @attr [Ingenico::Connect::SDK::Domain::Payout::PayoutResponse] refund
11
+ # @attr [Ingenico::Connect::SDK::Domain::Refund::RefundResponse] payout
12
+ # @attr [Ingenico::Connect::SDK::Domain::Token::TokenResponse] token
4
13
  class WebhooksEvent < Ingenico::Connect::SDK::DataObject
5
14
 
6
- # String
7
15
  attr_accessor :api_version
8
-
9
- # String
10
16
  attr_accessor :id
11
-
12
- # String
13
17
  attr_accessor :created
14
-
15
- # String
16
18
  attr_accessor :merchant_id
17
-
18
- # String
19
19
  attr_accessor :type
20
20
 
21
- # {Ingenico::Connect::SDK::Domain::Payment::PaymentResponse}
22
21
  attr_accessor :payment
23
-
24
- # {Ingenico::Connect::SDK::Domain::Payout::PayoutResponse}
25
22
  attr_accessor :refund
26
-
27
- # {Ingenico::Connect::SDK::Domain::Refund::RefundResponse}
28
23
  attr_accessor :payout
29
-
30
- # {Ingenico::Connect::SDK::Domain::Token::TokenResponse}
31
24
  attr_accessor :token
32
25
 
26
+ # @return [Hash]
33
27
  def to_h
34
28
  hash = super
35
- add_to_hash(hash, 'apiVersion', @api_version)
36
- add_to_hash(hash, 'id', @id)
37
- add_to_hash(hash, 'created', @created)
38
- add_to_hash(hash, 'merchantId', @merchant_id)
39
- add_to_hash(hash, 'type', @type)
40
- add_to_hash(hash, 'payment', @payment)
41
- add_to_hash(hash, 'refund', @refund)
42
- add_to_hash(hash, 'payout', @payout)
43
- add_to_hash(hash, 'token', @token)
29
+ hash['apiVersion'] = @api_version unless @api_version.nil?
30
+ hash['id'] = @id unless @id.nil?
31
+ hash['created'] = @created unless @created.nil?
32
+ hash['merchantId'] = @merchant_id unless @merchant_id.nil?
33
+ hash['type'] = @type unless @type.nil?
34
+ hash['payment'] = @payment.to_h unless @payment.nil?
35
+ hash['refund'] = @refund.to_h unless @refund.nil?
36
+ hash['payout'] = @payout.to_h unless @payout.nil?
37
+ hash['token'] = @token.to_h unless @token.nil?
44
38
  hash
45
39
  end
46
40
 
@@ -13,10 +13,10 @@ module Ingenico::Connect::SDK
13
13
  @secret_key_store = secret_key_store
14
14
  end
15
15
 
16
- # Unmarshals the given body, while also validating it using the given
17
- # request headers.
18
- # body:: body of the request, a String
19
- # request_headers:: headers of the request, as an Array of {Ingenico::Connect::SDK::RequestHeader}
16
+ # Unmarshals the given body, while also validating it using the given request headers.
17
+ #
18
+ # @param body [String] body of the request
19
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] headers of the request
20
20
  def unmarshal(body, request_headers)
21
21
  validate(body, request_headers)
22
22
  event = @marshaller.unmarshal(body, WebhooksEvent)
@@ -26,8 +26,8 @@ module Ingenico::Connect::SDK
26
26
 
27
27
  # Validates incoming request using request headers
28
28
  #
29
- # body:: body of the request, a String
30
- # request_headers:: headers of the request which is an Array of {Ingenico::Connect::SDK::RequestHeader}
29
+ # @param body [String] body of the request
30
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] headers of the request
31
31
  def validate(body, request_headers)
32
32
  validate_body(body, request_headers)
33
33
  end
@@ -42,8 +42,8 @@ module Ingenico::Connect::SDK
42
42
 
43
43
  # Validates the body using given request headers
44
44
  #
45
- # body:: a String converted from byte array
46
- # request_headers:: headers of the request, as an Array of SDK::RequestHeader
45
+ # @param body [String] body of the request
46
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] headers of the request
47
47
  def validate_body(body, request_headers)
48
48
  signature = get_header_value(request_headers, HEADER_SIGNATURE)
49
49
  key_id = get_header_value(request_headers, HEADER_KEY_ID)
@@ -59,8 +59,9 @@ module Ingenico::Connect::SDK
59
59
  end
60
60
 
61
61
  # Checks two signatures
62
- # signature:: a String
63
- # expected_signature:: a String
62
+ #
63
+ # @param signature [String]
64
+ # @param expected_signature [String]
64
65
  def equal_signatures?(signature, expected_signature)
65
66
  # NOTE: copy the signatures to avoid runtime tampering via references
66
67
  signature = signature.dup.freeze
@@ -0,0 +1,214 @@
1
+ require 'json'
2
+ require 'spec_helper'
3
+ require 'integration_setup'
4
+ require 'webmock/rspec'
5
+ require 'ingenico/connect/sdk/factory'
6
+ require 'ingenico/connect/sdk/data_object'
7
+ require 'ingenico/connect/sdk/multipart_form_data_object'
8
+ require 'ingenico/connect/sdk/multipart_form_data_request'
9
+ require 'ingenico/connect/sdk/uploadable_file'
10
+
11
+ describe 'multipart/form-data support' do
12
+ before(:context) { WebMock.allow_net_connect! }
13
+ after(:context) { WebMock.disable_net_connect! }
14
+
15
+ it 'Can send a Multipart Form Data Object POST upload with a response' do
16
+ configuration = Integration.init_communicator_configuration
17
+ configuration.api_endpoint = 'http://httpbin.org'
18
+
19
+ multipart = Ingenico::Connect::SDK::MultipartFormDataObject.new
20
+ multipart.add_file 'file', Ingenico::Connect::SDK::UploadableFile.new(
21
+ 'file.txt', 'file-content', 'text/plain'
22
+ )
23
+
24
+ multipart.add_value 'value', 'Hello World'
25
+
26
+ communicator = Ingenico::Connect::SDK::Factory.create_communicator_from_configuration configuration
27
+
28
+ response = communicator.post('/post', nil, nil, multipart,
29
+ HttpBinResponse, nil)
30
+
31
+ expect(response.form['value']).to eq 'Hello World'
32
+ expect(response.files['file']).to eq 'file-content'
33
+ end
34
+
35
+ it 'Can send a Multipart Form Data Request POST upload with a response' do
36
+ configuration = Integration.init_communicator_configuration
37
+ configuration.api_endpoint = 'http://httpbin.org'
38
+
39
+ multipart = Ingenico::Connect::SDK::MultipartFormDataObject.new
40
+ multipart.add_file 'file', Ingenico::Connect::SDK::UploadableFile.new(
41
+ 'file.txt', 'file-content', 'text-plain'
42
+ )
43
+
44
+ multipart.add_value 'value', 'Hello World'
45
+
46
+ communicator = Ingenico::Connect::SDK::Factory.create_communicator_from_configuration configuration
47
+
48
+ response = communicator.post '/post', nil, nil,
49
+ MultipartFormDataObjectWrapper.new(multipart), HttpBinResponse, nil
50
+
51
+ expect(response.form['value']).to eq 'Hello World'
52
+ expect(response.files['file']).to eq 'file-content'
53
+ end
54
+
55
+ it 'Can send a Multipart Form Data Object POST upload with a binary response' do
56
+ configuration = Integration.init_communicator_configuration
57
+ configuration.api_endpoint = 'http://httpbin.org'
58
+
59
+ multipart = Ingenico::Connect::SDK::MultipartFormDataObject.new
60
+ multipart.add_file 'file', Ingenico::Connect::SDK::UploadableFile.new(
61
+ 'file.txt', 'file-content', 'text/plain'
62
+ )
63
+ multipart.add_value 'value', 'Hello World'
64
+
65
+ communicator = Ingenico::Connect::SDK::Factory.create_communicator_from_configuration configuration
66
+
67
+ data = ''
68
+ communicator.post_with_binary_response '/post', nil, nil,
69
+ multipart, nil do |_, c|
70
+ data = c.read.force_encoding('UTF-8')
71
+ end
72
+ response = JSON.parse data
73
+
74
+ expect(response['form']['value']).to eq 'Hello World'
75
+ expect(response['files']['file']).to eq 'file-content'
76
+ end
77
+
78
+ it 'Can send a Multipart Form Data Request POST upload with a binary response' do
79
+ configuration = Integration.init_communicator_configuration
80
+ configuration.api_endpoint = 'http://httpbin.org'
81
+
82
+ multipart = Ingenico::Connect::SDK::MultipartFormDataObject.new
83
+ multipart.add_file 'file', Ingenico::Connect::SDK::UploadableFile.new(
84
+ 'file.txt', 'file-content', 'text/plain'
85
+ )
86
+ multipart.add_value 'value', 'Hello World'
87
+
88
+ communicator = Ingenico::Connect::SDK::Factory.create_communicator_from_configuration configuration
89
+
90
+ data = ''
91
+ communicator.post_with_binary_response '/post', nil, nil,
92
+ MultipartFormDataObjectWrapper.new(multipart), nil do |_, c|
93
+ data = c.read.force_encoding('UTF-8')
94
+ end
95
+ response = JSON.parse data
96
+
97
+ expect(response['form']['value']).to eq 'Hello World'
98
+ expect(response['files']['file']).to eq 'file-content'
99
+ end
100
+
101
+ it 'Can send a Multipart Form Data Object PUT upload with a response' do
102
+ configuration = Integration.init_communicator_configuration
103
+ configuration.api_endpoint = 'http://httpbin.org'
104
+
105
+ multipart = Ingenico::Connect::SDK::MultipartFormDataObject.new
106
+ multipart.add_file 'file', Ingenico::Connect::SDK::UploadableFile.new(
107
+ 'file.txt', 'file-content', 'text/plain'
108
+ )
109
+
110
+ multipart.add_value 'value', 'Hello World'
111
+
112
+ communicator = Ingenico::Connect::SDK::Factory.create_communicator_from_configuration configuration
113
+
114
+ response = communicator.put('/put', nil, nil, multipart,
115
+ HttpBinResponse, nil)
116
+
117
+ expect(response.form['value']).to eq 'Hello World'
118
+ expect(response.files['file']).to eq 'file-content'
119
+ end
120
+
121
+ it 'Can send a Multipart Form Data Request PUT upload with a response' do
122
+ configuration = Integration.init_communicator_configuration
123
+ configuration.api_endpoint = 'http://httpbin.org'
124
+
125
+ multipart = Ingenico::Connect::SDK::MultipartFormDataObject.new
126
+ multipart.add_file 'file', Ingenico::Connect::SDK::UploadableFile.new(
127
+ 'file.txt', 'file-content', 'text-plain'
128
+ )
129
+
130
+ multipart.add_value 'value', 'Hello World'
131
+
132
+ communicator = Ingenico::Connect::SDK::Factory.create_communicator_from_configuration configuration
133
+
134
+ response = communicator.put '/put', nil, nil,
135
+ MultipartFormDataObjectWrapper.new(multipart), HttpBinResponse, nil
136
+
137
+ expect(response.form['value']).to eq 'Hello World'
138
+ expect(response.files['file']).to eq 'file-content'
139
+ end
140
+
141
+ it 'Can send a Multipart Form Data Object PUT upload with a binary response' do
142
+ configuration = Integration.init_communicator_configuration
143
+ configuration.api_endpoint = 'http://httpbin.org'
144
+
145
+ multipart = Ingenico::Connect::SDK::MultipartFormDataObject.new
146
+ multipart.add_file 'file', Ingenico::Connect::SDK::UploadableFile.new(
147
+ 'file.txt', 'file-content', 'text/plain'
148
+ )
149
+ multipart.add_value 'value', 'Hello World'
150
+
151
+ communicator = Ingenico::Connect::SDK::Factory.create_communicator_from_configuration configuration
152
+
153
+ data = ''
154
+ communicator.put_with_binary_response '/put', nil, nil,
155
+ multipart, nil do |_, c|
156
+ data = c.read.force_encoding('UTF-8')
157
+ end
158
+ response = JSON.parse data
159
+
160
+ expect(response['form']['value']).to eq 'Hello World'
161
+ expect(response['files']['file']).to eq 'file-content'
162
+ end
163
+
164
+ it 'Can send a Multipart Form Data Request PUT upload with a binary response' do
165
+ configuration = Integration.init_communicator_configuration
166
+ configuration.api_endpoint = 'http://httpbin.org'
167
+
168
+ multipart = Ingenico::Connect::SDK::MultipartFormDataObject.new
169
+ multipart.add_file 'file', Ingenico::Connect::SDK::UploadableFile.new(
170
+ 'file.txt', 'file-content', 'text/plain'
171
+ )
172
+ multipart.add_value 'value', 'Hello World'
173
+
174
+ communicator = Ingenico::Connect::SDK::Factory.create_communicator_from_configuration configuration
175
+
176
+ data = ''
177
+ communicator.put_with_binary_response '/put', nil, nil,
178
+ MultipartFormDataObjectWrapper.new(multipart), nil do |_, c|
179
+ data = c.read.force_encoding('UTF-8')
180
+ end
181
+ response = JSON.parse data
182
+
183
+ expect(response['form']['value']).to eq 'Hello World'
184
+ expect(response['files']['file']).to eq 'file-content'
185
+ end
186
+ end
187
+
188
+ class HttpBinResponse < Ingenico::Connect::SDK::DataObject
189
+ @form = nil
190
+ @files = nil
191
+
192
+ attr_reader :form
193
+ attr_reader :files
194
+
195
+ def from_hash(hash)
196
+ super
197
+ @form = hash['form'] if hash.key? 'form'
198
+ @files = hash['files'] if hash.key? 'files'
199
+ end
200
+ end
201
+
202
+ class MultipartFormDataObjectWrapper < Ingenico::Connect::SDK::MultipartFormDataRequest
203
+ @multipart = nil
204
+
205
+ attr_reader :multipart
206
+
207
+ def initialize(multipart)
208
+ @multipart = multipart
209
+ end
210
+
211
+ def to_multipart_form_data_object
212
+ @multipart
213
+ end
214
+ end
@@ -67,8 +67,8 @@ describe 'DefaultConnectionIdempotence' do
67
67
 
68
68
  expect{response = CLIENT.merchant('20000').payments.create(request, call_context)}.
69
69
  to raise_error(Ingenico::Connect::SDK::DeclinedPaymentException){ |err|
70
- expect(err.status_code).to be(402)
71
- expect(err.response_body).to be(response_body)
70
+ expect(err.status_code).to eq(402)
71
+ expect(err.response_body).to eq(response_body)
72
72
  expect(call_context.idempotence_key).to eq(idempotence_key)
73
73
  expect(call_context.idempotence_request_timestamp).to be_nil
74
74
  }
@@ -89,8 +89,8 @@ describe 'DefaultConnectionIdempotence' do
89
89
 
90
90
  expect{response = CLIENT.merchant('20000').payments.create(request, call_context)}.
91
91
  to raise_error(Ingenico::Connect::SDK::DeclinedPaymentException){ |err|
92
- expect(err.status_code).to be(402)
93
- expect(err.response_body).to be(response_body)
92
+ expect(err.status_code).to eq(402)
93
+ expect(err.response_body).to eq(response_body)
94
94
  expect(call_context.idempotence_key).to eq(idempotence_key)
95
95
  expect(call_context.idempotence_request_timestamp.to_s).to eq(idempotence_timestamp.to_s)
96
96
  }
@@ -111,8 +111,8 @@ describe 'DefaultConnectionIdempotence' do
111
111
 
112
112
  expect{response = CLIENT.merchant('20000').payments.create(request, call_context)}.
113
113
  to raise_error(Ingenico::Connect::SDK::IdempotenceException){ |err|
114
- expect(err.status_code).to be(409)
115
- expect(err.response_body).to be(response_body)
114
+ expect(err.status_code).to eq(409)
115
+ expect(err.response_body).to eq(response_body)
116
116
  expect(call_context.idempotence_key).to eq(idempotence_key)
117
117
  expect(call_context.idempotence_request_timestamp.to_s).to eq(idempotence_timestamp.to_s)
118
118
  }
@@ -130,7 +130,7 @@ def create_payment_request
130
130
  order = Payments::Order.new
131
131
  order.customer = customer
132
132
  card = Definitions::Card.new
133
- card.ccv = '123'
133
+ card.cvv = '123'
134
134
  card.card_number = '4567350000427977'
135
135
  card.expiry_date = '1220'
136
136
  card_payment_method_specific_input = Payments::CardPaymentMethodSpecificInput.new
@@ -406,8 +406,6 @@ describe 'DefaultConnectionLogging' do
406
406
 
407
407
  # tests a read timeout
408
408
  it 'logs timeouts' do
409
- response_body = IO.read(resource_prefix + 'notFound.html')
410
-
411
409
  stub_request(:get, 'https://api-sandbox.globalcollect.com/v1/1234/services/testconnection')
412
410
  .to_raise(HTTPClient::ReceiveTimeoutError)
413
411
 
@@ -464,8 +462,6 @@ describe 'DefaultConnectionLogging' do
464
462
  end
465
463
 
466
464
  it 'can log errors individually' do
467
- response_body = IO.read(resource_prefix + 'notFound.html')
468
-
469
465
  stub_request(:get, 'https://api-sandbox.globalcollect.com/v1/1234/services/testconnection')
470
466
  .to_return{ |request| CLIENT.enable_logging(logger)
471
467
  raise HTTPClient::ReceiveTimeoutError.new}
@@ -1,5 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'uri'
3
+ require 'stringio'
3
4
  require 'sinatra'
4
5
 
5
6
  DefaultConnection ||= Ingenico::Connect::SDK::DefaultImpl::DefaultConnection
@@ -99,9 +100,18 @@ describe DefaultConnection do
99
100
  context 'sending and receiving' do
100
101
 
101
102
  class DummyResponse
102
- def status
103
+ def pop
104
+ self
105
+ end
106
+
107
+ def status_code
103
108
  200
104
109
  end
110
+
111
+ def content
112
+ StringIO.new(body || '')
113
+ end
114
+
105
115
  attr_accessor :headers, :body, :content_type, :uri
106
116
  end
107
117
 
@@ -110,21 +120,29 @@ describe DefaultConnection do
110
120
  # mock the HTTPClient obj inside DefaultConnection
111
121
  # for each type of requests so no real requests will be made
112
122
  client = connection.instance_variable_get(:@http_client)
113
- allow(client).to receive(:get) do |uri, hash|
123
+ allow(client).to receive(:get_async) do |uri, hash|
124
+ dummy_response = DummyResponse.new
125
+ dummy_response.headers = hash[:header]
126
+ dummy_response.uri = uri
127
+ dummy_response
128
+ end
129
+
130
+ allow(client).to receive(:delete_async) do |uri, hash|
114
131
  dummy_response = DummyResponse.new
115
132
  dummy_response.headers = hash[:header]
116
133
  dummy_response.uri = uri
117
134
  dummy_response
118
135
  end
119
136
 
120
- allow(client).to receive(:delete) do |uri, hash|
137
+ allow(client).to receive(:post_async) do |uri, hash|
121
138
  dummy_response = DummyResponse.new
122
139
  dummy_response.headers = hash[:header]
123
140
  dummy_response.uri = uri
141
+ dummy_response.body = hash[:body]
124
142
  dummy_response
125
143
  end
126
144
 
127
- allow(client).to receive(:post) do |uri, hash|
145
+ allow(client).to receive(:put_async) do |uri, hash|
128
146
  dummy_response = DummyResponse.new
129
147
  dummy_response.headers = hash[:header]
130
148
  dummy_response.uri = uri
@@ -132,7 +150,7 @@ describe DefaultConnection do
132
150
  dummy_response
133
151
  end
134
152
 
135
- allow(client).to receive(:put) do |uri, hash|
153
+ allow(client).to receive(:request_async) do |_method, uri, hash|
136
154
  dummy_response = DummyResponse.new
137
155
  dummy_response.headers = hash[:header]
138
156
  dummy_response.uri = uri
@@ -141,7 +159,7 @@ describe DefaultConnection do
141
159
  end
142
160
  end
143
161
 
144
- let(:headers) { { 'header1' => 'dummy', 'header2' => 'yammy' } }
162
+ let(:headers) { { 'Content-Type' => 'application/json', 'header1' => 'dummy', 'header2' => 'yammy' } }
145
163
  let(:sdk_headers) { headers.map {|k, v| Ingenico::Connect::SDK::ResponseHeader.new(k, v) } }
146
164
  let(:uri) { URI('http://foobar.com/v1/1234/services/convert/amount?source=EUR&amount=1000&target=USD') }
147
165
 
@@ -154,28 +172,34 @@ describe DefaultConnection do
154
172
  end
155
173
 
156
174
  it 'sends the correct get request' do
157
- res = connection.get(uri, sdk_headers)
158
- expect(sdk_headers_to_s(res.headers)).to eq(sdk_headers_to_s(sdk_headers))
175
+ response_headers = nil
176
+ connection.get(uri, sdk_headers) { |s, h, c| response_headers = h }
177
+ expect(sdk_headers_to_s(response_headers)).to eq(sdk_headers_to_s(sdk_headers))
159
178
  end
160
179
 
161
180
  it 'sends the correct delete request' do
162
- res = connection.delete(uri, sdk_headers)
163
- expect(sdk_headers_to_s(res.headers)).to eq(sdk_headers_to_s(sdk_headers))
181
+ response_headers = nil
182
+ connection.delete(uri, sdk_headers) { |s, h, c| response_headers = h }
183
+ expect(sdk_headers_to_s(response_headers)).to eq(sdk_headers_to_s(sdk_headers))
164
184
  end
165
185
 
166
186
  context 'with body' do
167
187
  let(:body) { 'dummy body' }
168
188
 
169
189
  it 'sends the correct post request' do
170
- res = connection.post(uri, sdk_headers, body)
171
- expect(res.get_header_value('Content-Type')).to eq('application/json')
172
- expect(res.body).to eq(body)
190
+ response_headers = nil
191
+ response_body = ''
192
+ connection.post(uri, sdk_headers, body) { |s, h, c| response_headers, response_body = h, c.read.force_encoding('UTF-8') }
193
+ expect(ResponseHeader.get_header_value(response_headers, 'Content-Type')).to eq('application/json')
194
+ expect(response_body).to eq(body)
173
195
  end
174
196
 
175
197
  it 'sends the correct put request' do
176
- res = connection.put(uri, sdk_headers, body)
177
- expect(res.get_header_value('Content-Type')).to eq('application/json')
178
- expect(res.body).to eq(body)
198
+ response_headers = nil
199
+ response_body = ''
200
+ connection.put(uri, sdk_headers, body) { |s, h, c| response_headers, response_body = h, c.read.force_encoding('UTF-8') }
201
+ expect(ResponseHeader.get_header_value(response_headers, 'Content-Type')).to eq('application/json')
202
+ expect(response_body).to eq(body)
179
203
  end
180
204
  end
181
205
 
@@ -241,7 +265,7 @@ describe DefaultConnection do
241
265
 
242
266
  # TODO: DELETE is basically the same, do we need to test it?
243
267
  it 'logs the correct get request' do
244
- connection.get(uri, sdk_headers)
268
+ connection.get(uri, sdk_headers) { |s, h, c| }
245
269
  expect($stdout.string).to match(regex)
246
270
  match_info = $stdout.string.match(regex)
247
271
  expect(match_info[2]).to eq('GET')
@@ -253,7 +277,7 @@ describe DefaultConnection do
253
277
  context 'with body' do
254
278
  let(:body) { 'dummy body' }
255
279
  it 'logs the correct post request' do
256
- connection.post(uri, sdk_headers, body)
280
+ connection.post(uri, sdk_headers, body) { |s, h, c| }
257
281
  expect($stdout.string).to match(with_body_regex)
258
282
  match_info = $stdout.string.match(with_body_regex)
259
283
  expect(match_info[2]).to eq('POST')
@@ -304,25 +328,24 @@ describe DefaultConnection do
304
328
  let(:sdk_headers) { [] }
305
329
 
306
330
  it 'uses persistent connection if HTTP 1.1 is supported' do
307
- 100.times { connection.get(uri, sdk_headers) }
331
+ 100.times { connection.get(uri, sdk_headers) { |x, y| } }
308
332
  expect(connection.session_count).to eq(1)
309
333
  end
310
334
 
311
335
  it 'retrieves the correct json file' do
312
- res = connection.get(uri, sdk_headers)
336
+ response_body = ''
337
+ connection.get(uri, sdk_headers) { |status, headers, body| response_body = body.read.force_encoding('UTF-8') }
313
338
  prefix = 'spec/fixtures/resources/defaultimpl/'
314
- expect(res.body).to eq(IO.read(prefix + 'convertAmount.json'))
339
+ expect(response_body).to eq(IO.read(prefix + 'convertAmount.json'))
315
340
  end
316
341
 
317
342
  it 'can explicitly close connections' do
318
- connection.get(uri, sdk_headers)
319
- expect(connection.session_count).to eq(1)
343
+ connection.get(uri, sdk_headers) { |x, y| }
320
344
 
321
345
  connection.close
322
346
  expect(connection.session_count).to eq(0)
323
347
 
324
- connection.get(uri, sdk_headers)
325
- expect(connection.session_count).to eq(1)
348
+ connection.get(uri, sdk_headers) { |x, y| }
326
349
  end
327
350
  end
328
351
  end