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
@@ -1,44 +1,33 @@
1
1
  module Ingenico::Connect::SDK
2
2
 
3
- # A CommunicatorConfiguration stores all data used to initialize an {Ingenico::Connect::SDK::Communicator}. It stores the following:
3
+ # A CommunicatorConfiguration stores all data used to initialize an {Ingenico::Connect::SDK::Communicator}.
4
4
  #
5
- # api_endpoint:: The base url to the Ingenico ePayments platform.
6
- # api_key_id:: The identifier of the _secret_api_key_ used to authenticate requests.
7
- # secret_api_key:: The key used to authenticate requests sent to the Ingenico ePayments platform.
8
- # authorization_type:: String describing the authorization protocol to follow.
9
- # connect_timeout:: The number of seconds before a connection attempt with the Ingenico ePayments platform times out.
10
- # socket_timeout:: The number of seconds before a timeout occurs
11
- # when transmitting data to or from the Ingenico ePayments platform.
12
- # max_connections:: The number of connections with the Ingenico ePayments platform
13
- # that are kept alive in the connection pool. These connections will be reused when possible.
14
- # proxy_configuration:: {Ingenico::Connect::SDK::ProxyConfiguration} instance that stores the url to a proxy to be used in all communication,
15
- # or nil if no proxy should be used.
16
- # integrator:: String
17
- # shopping_cart_extension:: {Ingenico::Connect::SDK::Domain::Metadata::ShoppingCartExtension} that stores shopping cart-related metadata.
5
+ # @attr [String] api_endpoint Base URL to the Ingenico ePayments platform
6
+ # @attr [String] api_key_id Identifier of the _secret_api_key_ used in authentication.
7
+ # @attr [String] secret_api_key Secret key used in authentication
8
+ # @attr [String] authorization_type String representing the authentication algorithm used
18
9
  class CommunicatorConfiguration < EndpointConfiguration
19
10
 
20
- # Creates a new CommunicatorConfiguration instance, it accepts the following arguments:
21
- #
22
- # properties:: A hash that may contain any of the other parameters.
23
- # If a parameter is given in both the _properties_ and separately,
24
- # the separate value takes precedence.
25
- # api_endpoint:: The base url to the Ingenico ePayments platform.
26
- # api_key_id:: The identifier of the _secret_api_key_ used to authenticate requests.
27
- # secret_api_key:: The key used to authenticate requests sent to the Ingenico ePayments platform.
28
- # authorization_type:: String describing the authorization protocol to follow.
29
- # connect_timeout:: The number of seconds before a connection attempt with the Ingenico ePayments platform times out.
30
- # socket_timeout:: The number of seconds before a timeout occurs
31
- # when transmitting data to or from the Ingenico ePayments platform.
32
- # max_connections:: The number of connections with the Ingenico ePayments platform
33
- # that are kept alive in the connection pool. These connections will be reused when possible.
34
- # proxy_configuration:: {Ingenico::Connect::SDK::ProxyConfiguration} instance that stores the url to a proxy to be used in all communication,
35
- # or nil if no proxy should be used.
36
- # integrator:: String
37
- # shopping_cart_extension:: {Ingenico::Connect::SDK::Domain::Metadata::ShoppingCartExtension} that stores shopping cart-related metadata.
11
+ # Creates a new CommunicatorConfiguration instance.
38
12
  #
39
13
  # If a _properties_ object is given, it will be parsed like a hash in order to read these attributes.
40
14
  # If a value is given in both the _properties_ hash and as a separate parameter,
41
15
  # the separate parameter will take precedence over the value in the properties.
16
+ #
17
+ # @param properties [Hash] hash that may contain any of the other parameters.
18
+ # @param api_endpoint [String] the base URL to the Ingenico ePayments platform.
19
+ # @param api_key_id [String] the identifier of the _secret_api_key_ used to authenticate requests.
20
+ # @param secret_api_key [String] the key used to authenticate requests sent to the Ingenico ePayments platform.
21
+ # @param authorization_type [String] string describing the authorization protocol to follow.
22
+ # @param connect_timeout [Integer] the number of seconds before a connection attempt with the Ingenico ePayments platform times out.
23
+ # @param socket_timeout [Integer] the number of seconds before a timeout occurs when transmitting data to or from the Ingenico ePayments platform.
24
+ # @param max_connections [Integer] the number of connections with the Ingenico ePayments platform that are kept alive in the connection pool.
25
+ # These connections will be reused when possible.
26
+ # @param proxy_configuration [Ingenico::Connect::SDK::ProxyConfiguration] stores the URL to a proxy to be used in all communication,
27
+ # or nil if no proxy should be used.
28
+ # @param integrator [String] name of the integrator
29
+ # @param shopping_cart_extension [Ingenico::Connect::SDK::Domain::Metadata::ShoppingCartExtension] stores shopping cart-related metadata.
30
+ # @see EndpointConfiguration#initialize
42
31
  def initialize(properties: nil, api_endpoint: nil, api_key_id: nil,
43
32
  secret_api_key: nil, authorization_type: nil,
44
33
  connect_timeout: nil, socket_timeout: nil,
@@ -83,16 +72,9 @@ module Ingenico::Connect::SDK
83
72
  end
84
73
  end
85
74
 
86
- # Base URL to the Ingenico ePayments platform
87
75
  attr_accessor :api_endpoint
88
-
89
- # Identifier of the _secret_api_key_ used in authentication.
90
76
  attr_accessor :api_key_id
91
-
92
- # Secret key used in authentication
93
77
  attr_accessor :secret_api_key
94
-
95
- # String representing the authentication algorithm used
96
78
  attr_accessor :authorization_type
97
79
  end
98
80
  end
@@ -6,24 +6,34 @@ module Ingenico::Connect::SDK
6
6
  class Connection
7
7
  include Ingenico::Connect::SDK::Logging::LoggingCapable
8
8
 
9
- # Performs a GET request to _uri_ using _request_headers_ and returns the response as a {Ingenico::Connect::SDK::Response} object
9
+ # Performs a GET request to _uri_ using _request_headers_,
10
+ # and yields the response as the status code, headers and body.
11
+ #
12
+ # @yield (Integer, Array<Ingenico::Connect::SDK::ResponseHeader>, IO) The status code, headers and body of the response.
10
13
  def get(uri, request_headers)
11
14
  raise NotImplementedError
12
15
  end
13
16
 
14
- # Performs a DELETE request to _uri_ using _request_headers_ and returns the response as a {Ingenico::Connect::SDK::Response} object
17
+ # Performs a DELETE request to _uri_ using _request_headers_,
18
+ # and yields the response as the status code, headers and body.
19
+ #
20
+ # @yield (Integer, Array<Ingenico::Connect::SDK::ResponseHeader>, IO) The status code, headers and body of the response.
15
21
  def delete(uri, request_headers)
16
22
  raise NotImplementedError
17
23
  end
18
24
 
19
- # Performs a POST request to _uri_ using _request_headers_ and _body_.
20
- # Returns the response as a {Ingenico::Connect::SDK::Response} object
25
+ # Performs a POST request to _uri_ using _request_headers_ and _body_,
26
+ # and yields the response as the status code, headers and body.
27
+ #
28
+ # @yield (Integer, Array<Ingenico::Connect::SDK::ResponseHeader>, IO) The status code, headers and body of the response.
21
29
  def post(uri, request_headers, body)
22
30
  raise NotImplementedError
23
31
  end
24
32
 
25
- # Performs a PUT request to _uri_ using _request_headers_ and _body_.
26
- # Returns the response as a {Ingenico::Connect::SDK::Response} object
33
+ # Performs a PUT request to _uri_ using _request_headers_ and _body_,
34
+ # and yields the response as the status code, headers and body.
35
+ #
36
+ # @yield (Integer, Array<Ingenico::Connect::SDK::ResponseHeader>, IO) The status code, headers and body of the response.
27
37
  def put(uri, request_headers, body)
28
38
  raise NotImplementedError
29
39
  end
@@ -8,6 +8,8 @@ module Ingenico::Connect::SDK
8
8
  # Returns a hash representation of the DataObject.
9
9
  # The hash contains camelCase representations of the variables, and their values.
10
10
  # Should be overridden to add all instance variables of the object.
11
+ #
12
+ # @return [Hash]
11
13
  def to_h
12
14
  {}
13
15
  end
@@ -26,18 +28,5 @@ module Ingenico::Connect::SDK
26
28
  # Note that the hash contains Strings as keys instead of more commonly used tokens.
27
29
  def from_hash(hash)
28
30
  end
29
-
30
- private
31
-
32
- # Adds a serializable hash or array representation of _value_ to _hash_ keyed under _key_
33
- def add_to_hash(hash, key, value)
34
- if value.is_a?(Array) # For arrays, convert the elements to hash representations
35
- hash[key] = value.collect{|val| if val.is_a?(DataObject); val.to_h else val end}
36
- elsif value.is_a?(DataObject)
37
- hash[key] = value.to_h
38
- elsif !value.nil?
39
- hash[key] = value
40
- end
41
- end
42
31
  end
43
32
  end
@@ -16,7 +16,7 @@ module Ingenico::Connect::SDK
16
16
  end
17
17
 
18
18
  # The declined payment result returned by the Ingenico ePayments platform.
19
- # Given as a {Ingenico::Connect::SDK::Domain::Payment::CreatePaymentResult} object.
19
+ # @return [Ingenico::Connect::SDK::Domain::Payment::CreatePaymentResult]
20
20
  def payment_result
21
21
  if @errors.nil?
22
22
  nil
@@ -16,7 +16,7 @@ module Ingenico::Connect::SDK
16
16
  end
17
17
 
18
18
  # The declined payout result as returned by the Ingenico ePayments platform.
19
- # Given as a {Ingenico::Connect::SDK::Domain::Payout::PayoutResult} object.
19
+ # @return [Ingenico::Connect::SDK::Domain::Payout::PayoutResult]
20
20
  def payout_result
21
21
  if @errors.nil?
22
22
  nil
@@ -18,7 +18,7 @@ module Ingenico::Connect::SDK
18
18
  end
19
19
 
20
20
  # The declined refund result as returned by the Ingenico ePayments platform.
21
- # Given as a {Ingenico::Connect::SDK::Domain::Refund::RefundResult} object.
21
+ # @return [Ingenico::Connect::SDK::Domain::Refund::RefundResult]
22
22
  def refund_result
23
23
  if @errors.nil?
24
24
  nil
@@ -5,11 +5,12 @@ module Ingenico::Connect::SDK
5
5
  class AuthorizationType
6
6
  V1HMAC = 'v1HMAC'
7
7
 
8
- # Returns the authorization string that belongs to the parameter _authorization_, or _nil_ if not found.
8
+ # @return [String] the authorization string that belongs to the parameter _authorization_, or _nil_ if not found.
9
9
  def self.get_authorization(authorization)
10
10
  authorization if authorization == 'v1HMAC'
11
11
  end
12
12
 
13
+ # @return [String]
13
14
  def self.get_signature_string
14
15
  V1HMAC
15
16
  end
@@ -15,9 +15,10 @@ module Ingenico::Connect::SDK
15
15
 
16
16
  # Construct a new DefaultAuthenticator instance that can sign requests
17
17
  # with the provided _api_key_id_ and _secret_api_key_.
18
- # authorization_type:: The authorization protocol to use for authentication.
19
- # api_key_id:: Identifier for the secret key used in authentication.
20
- # secret_api_key:: The secret key that is used to generate the authentication signature.
18
+ #
19
+ # @param authorization_type [String] the authorization protocol to use for authentication.
20
+ # @param api_key_id [String] identifier for the secret key used in authentication.
21
+ # @param secret_api_key [String] the secret key that is used to generate the authentication signature.
21
22
  def initialize(authorization_type, api_key_id, secret_api_key)
22
23
  raise ArgumentError unless authorization_type
23
24
  raise ArgumentError unless api_key_id and not api_key_id.strip.empty?
@@ -29,10 +30,11 @@ module Ingenico::Connect::SDK
29
30
  end
30
31
 
31
32
  # Creates a signature to authenticate a request.
32
- # Uses the following parameters:
33
- # http_method:: 'GET', 'PUT', 'POST' or 'DELETE' indicating which HTTP method will be used with the request
34
- # resource_uri:: URI object that includes #path and #query of the url that will be used, #query may be *nil*
35
- # request_headers:: {Ingenico::Connect::SDK::RequestHeader} list that contains all headers used by the request
33
+ #
34
+ # @param http_method [String] 'GET', 'PUT', 'POST' or 'DELETE' indicating which HTTP method will be used with the request
35
+ # @param resource_uri [URI::HTTP] URI object that includes #path and #query of the URL that will be used, #query may be *nil*
36
+ # @param http_headers [Array<Ingenico::Connect::SDK::RequestHeader>] list that contains all headers used by the request
37
+ # @return [String] the created signature
36
38
  def create_simple_authentication_signature(http_method, resource_uri, http_headers)
37
39
  raise ArgumentError unless http_method and not http_method.strip.empty?
38
40
  raise ArgumentError unless resource_uri
@@ -16,22 +16,22 @@ end
16
16
  module Ingenico::Connect::SDK
17
17
  module DefaultImpl
18
18
  class DefaultConnection < PooledConnection
19
-
20
19
  using RefineHTTPClient
21
20
 
22
21
  CONTENT_TYPE = 'Content-Type'.freeze
23
22
  JSON_CONTENT_TYPE = 'application/json'.freeze
24
23
 
25
- # Initialized using a hash containing the following parameters:
26
- # connect_timeout:: Connection timeout in seconds.
27
- # socket_timeout:: Socket timeout in seconds.
28
- # max_connections:: Number of connections kept alive in the thread pool.
29
- # Uses {Ingenico::Connect::SDK::CommunicatorConfiguration.DEFAULT_MAX_CONNECTIONS} if not given.
30
- # proxy_configuration:: {Ingenico::Connect::SDK::ProxyConfiguration} object that stores the proxy to use.
31
- # If not given the system default proxy is used;
32
- # if there is no system default proxy set either, no proxy is used.
24
+ # @param args [Hash] the parameters to initialize the connection with
25
+ # @option args [Integer] :connect_timeout connection timeout in seconds.
26
+ # @option args [Integer] :socket_timeout socket timeout in seconds.
27
+ # @option args [Integer] :max_connections number of connections kept alive in the thread pool.
28
+ # Uses {Ingenico::Connect::SDK::CommunicatorConfiguration.DEFAULT_MAX_CONNECTIONS} if not given.
29
+ # @option args [Ingenico::Connect::SDK::ProxyConfiguration] :proxy_configuration object that stores the proxy to use.
30
+ # If not given the system default proxy is used;
31
+ # if there is no system default proxy set either, no proxy is used.
33
32
  def initialize(args)
34
33
  raise ArgumentError unless args.is_a? Hash
34
+
35
35
  # Set timeouts to nil if they are negative
36
36
  @connect_timeout = args[:connect_timeout]
37
37
  @connect_timeout = nil unless @connect_timeout.nil? || @connect_timeout > 0
@@ -59,15 +59,17 @@ module Ingenico::Connect::SDK
59
59
  if @proxy_configuration
60
60
  httpclient = HTTPClient.new(@proxy_configuration.proxy_uri)
61
61
  httpclient.set_proxy_auth(@proxy_configuration.username, @proxy_configuration.password)
62
+ httpclient.force_basic_auth = true unless @proxy_configuration.username.nil? || @proxy_configuration.password.nil?
62
63
  httpclient
63
64
  else # use system settings
64
65
  proxy_string = ENV['https_proxy'] || ENV['http_proxy']
65
66
  # proxy string format = 'http://username:password@hostname:port'
66
- proxy_string =~ %r(https?//(?<username>[^:]):(?<password>[^@])@.*)
67
- username = $1
68
- password = $2
67
+ proxy_string =~ %r{https?//(?<username>[^:]):(?<password>[^@])@.*}
68
+ username = Regexp.last_match(1)
69
+ password = Regexp.last_match(2)
69
70
  httpclient = HTTPClient.new(proxy_string)
70
71
  httpclient.set_proxy_auth(username, password) unless username.nil? || password.nil?
72
+ httpclient.force_basic_auth = true unless username.nil? || password.nil?
71
73
  httpclient
72
74
  end
73
75
  end
@@ -102,65 +104,100 @@ module Ingenico::Connect::SDK
102
104
  # Performs a GET request to the Ingenico ePayments platform
103
105
  # @see request
104
106
  def get(uri, request_headers)
105
- request('get', uri, request_headers)
107
+ request('get', uri, request_headers) do |response_status_code, response_headers, response_body|
108
+ yield response_status_code, response_headers, response_body
109
+ end
106
110
  end
107
111
 
108
112
  # Performs a DELETE request to the Ingenico ePayments platform
109
113
  # @see request
110
114
  def delete(uri, request_headers)
111
- request('delete', uri, request_headers)
115
+ request('delete', uri, request_headers) do |response_status_code, response_headers, response_body|
116
+ yield response_status_code, response_headers, response_body
117
+ end
112
118
  end
113
119
 
114
120
  # Performs a POST request to the Ingenico ePayments platform
115
121
  # @see request
116
122
  def post(uri, request_headers, body)
117
- request('post', uri, request_headers, body)
123
+ request('post', uri, request_headers, body) do |response_status_code, response_headers, response_body|
124
+ yield response_status_code, response_headers, response_body
125
+ end
118
126
  end
119
127
 
120
128
  # Performs a PUT request to the Ingenico ePayments platform
121
129
  # @see request
122
130
  def put(uri, request_headers, body)
123
- request('put', uri, request_headers, body)
131
+ request('put', uri, request_headers, body) do |response_status_code, response_headers, response_body|
132
+ yield response_status_code, response_headers, response_body
133
+ end
124
134
  end
125
135
 
126
- # performs a HTTP request and returns the response as an {Ingenico::Connect::SDK::Response} object.
136
+ # Performs a HTTP request and yields the response as the status code, headers and body.
127
137
  # Also ensures the request is logged when sent and its response is logged when received.
128
- # Raises {Ingenico::Connect::SDK::CommunicationException} when communication with the Ingenico ePayments platform was not successful.
129
- # method:: 'GET', 'DELETE', 'POST' or 'PUT' depending on the HTTP method being used.
130
- # uri:: Full URI of the location the request is targeted at, including query parameters.
131
- # request_headers:: {Ingenico::Connect::SDK::RequestHeader} list of headers that should be used as HTTP headers in the request.
132
- # body:: Request body as a String.
133
- def request(method, uri, request_headers, body=nil)
138
+ #
139
+ # @param method [String] 'GET', 'DELETE', 'POST' or 'PUT' depending on the HTTP method being used.
140
+ # @param uri [URI::HTTP] full URI of the location the request is targeted at, including query parameters.
141
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] list of headers that should be used as HTTP headers in the request.
142
+ # @param body [String, Ingenico::Connect::SDK::MultipartFormDataObject] request body.
143
+ # @yield (Integer, Array<Ingenico::Connect::SDK::ResponseHeader>, IO) The status code, headers and body of the response.
144
+ # @raise [Ingenico::Connect::SDK::CommunicationException] when communication with the Ingenico ePayments platform was not successful.
145
+ def request(method, uri, request_headers, body = nil)
134
146
  request_headers = convert_from_sdk_headers(request_headers)
135
147
  request_id = SecureRandom.uuid
136
- request_headers[CONTENT_TYPE] = JSON_CONTENT_TYPE if body
137
148
  content_type = request_headers[CONTENT_TYPE]
149
+
138
150
  info = { headers: request_headers, content_type: content_type }
139
151
  info[:body] = body unless body.nil?
152
+
140
153
  log_request(request_id, method.upcase, uri, info)
141
154
 
142
155
  start_time = Time.now
143
156
  begin
144
- response = if body
145
- @http_client.send(method, uri, header: request_headers, body: body)
146
- else
147
- @http_client.send(method, uri, header: request_headers)
148
- end
157
+ response_headers = nil
158
+ response_status_code = nil
159
+ response_content_type = nil
160
+ response_body = ''
161
+
162
+ if body.is_a? Ingenico::Connect::SDK::MultipartFormDataObject
163
+ multipart_request(method, uri, request_headers, body) do |status_code, headers, r_content_type, r_body|
164
+ response_headers = headers
165
+ response_status_code = status_code
166
+ response_content_type = r_content_type
167
+ unless binary_content_type? response_content_type
168
+ response_body = r_body.read.force_encoding('UTF-8')
169
+ r_body = StringIO.new(response_body)
170
+ end
171
+
172
+ yield status_code, headers, r_body
173
+ end
174
+ else
175
+ raw_request(method, uri, request_headers, body) do |status_code, headers, r_content_type, r_body|
176
+ response_headers = headers
177
+ response_status_code = status_code
178
+ response_content_type = r_content_type
179
+ unless binary_content_type? response_content_type
180
+ response_body = r_body.read.force_encoding('UTF-8')
181
+ r_body = StringIO.new(response_body)
182
+ end
183
+
184
+ yield status_code, headers, r_body
185
+ end
186
+ end
187
+
188
+ log_response(request_id, response_status_code, start_time,
189
+ headers: response_headers, body: response_body,
190
+ content_type: response_content_type)
149
191
  rescue HTTPClient::TimeoutError => e
150
192
  log_error(request_id, start_time, e)
151
- raise Ingenico::Connect::SDK::CommunicationException.new(e)
152
- rescue HTTPClient::KeepAliveDisconnected, HTTPClient::RetryableResponse => e # retry these?
193
+ raise Ingenico::Connect::SDK::CommunicationException, e
194
+ rescue HTTPClient::KeepAliveDisconnected, HTTPClient::RetryableResponse => e # retry these?
153
195
  log_error(request_id, start_time, e)
154
- raise Ingenico::Connect::SDK::CommunicationException.new(e)
155
- rescue => e
196
+ raise Ingenico::Connect::SDK::CommunicationException, e
197
+ rescue StandardError => e
156
198
  log_error(request_id, start_time, e)
157
- raise Ingenico::Connect::SDK::CommunicationException.new(e)
199
+ raise Ingenico::Connect::SDK::CommunicationException, e
158
200
  end
159
-
160
- log_response(request_id, response.status, start_time,
161
- headers: response.headers, body: response.body,
162
- content_type: response.content_type)
163
- convert_to_sdk_response(response)
164
201
  end
165
202
 
166
203
  # logging code
@@ -169,10 +206,10 @@ module Ingenico::Connect::SDK
169
206
  # Note that only one logger can be registered at a time and calling _enable_logging_
170
207
  # a second time will override the old logger instance with the new one.
171
208
  #
172
- # communicator_logger:: The {Ingenico::Connect::SDK::Logging::CommunicatorLogger} the requests and responses are logged to
173
- #
209
+ # @param communicator_logger [Ingenico::Connect::SDK::Logging::CommunicatorLogger] the communicator logger the requests and responses are logged to
174
210
  def enable_logging(communicator_logger)
175
- raise ArgumentError.new('communicatorLogger is required') unless communicator_logger
211
+ raise ArgumentError, 'communicatorLogger is required' unless communicator_logger
212
+
176
213
  @communicator_logger = communicator_logger
177
214
  end
178
215
 
@@ -185,56 +222,163 @@ module Ingenico::Connect::SDK
185
222
 
186
223
  # Converts a {Ingenico::Connect::SDK::RequestHeader} list headers to a hash
187
224
  def convert_from_sdk_headers(headers)
188
- headers.inject({}) { |hash, h| hash[h.name] = h.value ; hash}
225
+ headers.each_with_object({}) { |h, hash| hash[h.name] = h.value }
189
226
  end
190
227
 
191
228
  # Converts a hash to a {Ingenico::Connect::SDK::ResponseHeader} list
192
- def convert_to_sdk_headers(headers)
193
- headers.inject([]) { |arr, (k, v)| arr << Ingenico::Connect::SDK::ResponseHeader.new(k, v) }
229
+ def convert_to_sdk_response_headers(headers)
230
+ arr ||= []
231
+ headers.each { |k, v| arr << Ingenico::Connect::SDK::ResponseHeader.new(k, v) }
232
+ arr
194
233
  end
195
234
 
196
- # converts a HTTPClient response to a {Ingenico::Connect::SDK::Response}
197
- def convert_to_sdk_response(response)
198
- Ingenico::Connect::SDK::Response.new(response.status,
199
- response.body,
200
- convert_to_sdk_headers(response.headers))
201
- end
202
-
203
- def log_request(requestId, method, uri, args={})
235
+ def log_request(request_id, method, uri, args = {})
204
236
  return unless @communicator_logger
205
237
 
206
- headers, body, content_type = args[:headers], args[:body], args[:content_type]
207
- log_msg_builder = Ingenico::Connect::SDK::Logging::RequestLogMessageBuilder.new(requestId, method, uri)
238
+ headers = args[:headers]
239
+ body = args[:body]
240
+ content_type = args[:content_type]
241
+ log_msg_builder = Ingenico::Connect::SDK::Logging::RequestLogMessageBuilder.new(request_id, method, uri)
208
242
  headers.each { |k, v| log_msg_builder.add_headers(k, v) } if headers
209
- log_msg_builder.set_body(body, content_type)
243
+
244
+ if binary?(headers)
245
+ log_msg_builder.set_body('<binary content>', content_type)
246
+ else
247
+ log_msg_builder.set_body(body, content_type)
248
+ end
210
249
 
211
250
  begin
212
251
  @communicator_logger.log(log_msg_builder.get_message)
213
- rescue => e
214
- @communicator_logger.log("An error occurred trying to log request #{requestId}", e)
252
+ rescue StandardError => e
253
+ @communicator_logger.log("An error occurred trying to log request #{request_id}", e)
215
254
  end
216
255
  end
217
256
 
218
- def log_response(requestId, status_code, start_time, args={})
257
+ # Creates the log_response stream
258
+ # both based on whether or not it is binary and on the rest of the response
259
+ def log_response(request_id, status_code, start_time, args = {})
219
260
  return unless @communicator_logger
220
261
 
221
- duration = (Time.now - start_time) * 1000 # in millisecs
222
- headers, body, content_type = args[:headers], args[:body], args[:content_type]
223
- log_msg_builder = Ingenico::Connect::SDK::Logging::ResponseLogMessageBuilder.new(requestId, status_code, duration)
224
- headers.each { |k, v| log_msg_builder.add_headers(k, v) } if headers
225
- log_msg_builder.set_body(body, content_type)
262
+ duration = (Time.now - start_time) * 1000 # in milliseconds
263
+ headers = args[:headers]
264
+ body = args[:body] unless args[:body].nil?
265
+ content_type = args[:content_type]
266
+
267
+ log_msg_builder = Ingenico::Connect::SDK::Logging::ResponseLogMessageBuilder.new(request_id, status_code, duration)
268
+ unless headers.nil?
269
+ headers = convert_from_sdk_headers(headers)
270
+ headers.each do |key, value|
271
+ log_msg_builder.add_headers(key, value)
272
+ end
273
+ end
274
+
275
+ if binary_content_type?(content_type)
276
+ log_msg_builder.set_body('<binary content>', content_type)
277
+ else
278
+ log_msg_builder.set_body(body, content_type)
279
+ end
226
280
 
227
281
  begin
228
282
  @communicator_logger.log(log_msg_builder.get_message)
229
- rescue => e
230
- @communicator_logger.log("An error occurred trying to log response #{requestId}", e)
283
+ rescue StandardError => e
284
+ @communicator_logger.log("An error occurred trying to log response #{request_id}", e)
231
285
  end
232
286
  end
233
287
 
234
- def log_error(requestId, start_time, thrown)
288
+ def log_error(request_id, start_time, thrown)
235
289
  return unless @communicator_logger
290
+
236
291
  duration = (Time.now - start_time) * 1000 # in millisecs
237
- @communicator_logger.log("Error occurred for outgoing request (requestId='#{requestId}', #{duration} ms)", thrown)
292
+ @communicator_logger.log("Error occurred for outgoing request (requestId='#{request_id}', #{duration} ms)", thrown)
293
+ end
294
+
295
+ # @param headers [Hash]
296
+ def binary?(headers)
297
+ unless headers.nil?
298
+ content_type = nil
299
+ headers.each { |k, v| content_type = v if k.casecmp(CONTENT_TYPE).zero? }
300
+
301
+ binary_content_type?(content_type)
302
+ end
303
+ end
304
+
305
+ # @param content_type [String]
306
+ def binary_content_type?(content_type)
307
+ unless content_type.nil?
308
+ content_type = content_type.downcase
309
+ return !content_type.start_with?('text/') &&
310
+ !content_type.include?('json') &&
311
+ !content_type.include?('xml')
312
+ end
313
+ false
314
+ end
315
+
316
+ # Makes a request using the specified method
317
+ #
318
+ # Yields a status code, an array of {Ingenico::Connect::SDK::ResponseHeader},
319
+ # the content_type and body
320
+ def raw_request(method, uri, headers, body = nil)
321
+ connection = if body
322
+ @http_client.send(method + '_async', uri, body: body, header: headers)
323
+ else
324
+ @http_client.send(method + '_async', uri, header: headers)
325
+ end
326
+
327
+ response = connection.pop
328
+ pipe = response.content
329
+ response_headers = convert_to_sdk_response_headers(response.headers)
330
+
331
+ begin
332
+ yield response.status_code, response_headers, response.content_type, pipe
333
+ ensure
334
+ pipe.close
335
+ end
336
+ end
337
+
338
+ # Makes a request using the specified method
339
+ #
340
+ # Yields a status code, an array of {Ingenico::Connect::SDK::ResponseHeader},
341
+ # the content_type and body
342
+ def multipart_request(method, uri, headers, body = nil)
343
+ unless body.is_a? Ingenico::Connect::SDK::MultipartFormDataObject
344
+ raise ArgumentError, 'body should be a MultipartFormDataObject'
345
+ end
346
+
347
+ if method != 'post' && method != 'put'
348
+ raise ArgumentError, "method #{method} is not supported"
349
+ end
350
+
351
+ connection = @http_client.send method + '_async',
352
+ uri,
353
+ body: multipart_request_body(body),
354
+ header: headers
355
+
356
+ response = connection.pop
357
+ pipe = response.content
358
+ response_headers = convert_to_sdk_response_headers(response.headers)
359
+
360
+ begin
361
+ yield response.status_code, response_headers, response.content_type, pipe
362
+ ensure
363
+ pipe.close
364
+ end
365
+ end
366
+
367
+ # Creates a request body for the multipart request
368
+ def multipart_request_body( body )
369
+ request_body = []
370
+ body.files.each do |k, v|
371
+ request_body.push :content => v.content,
372
+ 'Content-Type' => v.content_type,
373
+ 'Content-Disposition' => "form-data; name=\"#{k}\"; filename=\"#{v.file_name}\"",
374
+ 'Content-Transfer-Encoding' => 'binary'
375
+ end
376
+
377
+ body.values.each do |k, v|
378
+ request_body << { :content => v,
379
+ 'Content-Disposition' => "form-data; name=\"#{k}\"" }
380
+ end
381
+ request_body
238
382
  end
239
383
  end
240
384
  end