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
@@ -2,6 +2,8 @@ module Ingenico::Connect::SDK
2
2
 
3
3
  # This exception is used when an error occurs during network communication with the Ingenico ePayments platform.
4
4
  # A common cause is a timeout while connecting or when receiving or sending data.
5
+ #
6
+ # @attr [Exception] cause The error that is the cause of this error.
5
7
  class CommunicationException < RuntimeError
6
8
 
7
9
  def initialize(cause)
@@ -9,7 +11,6 @@ module Ingenico::Connect::SDK
9
11
  @cause = cause
10
12
  end
11
13
 
12
- # The error that is the cause of this error.
13
14
  attr_accessor :cause
14
15
  end
15
16
  end
@@ -1,164 +1,357 @@
1
1
  require 'uri'
2
2
 
3
3
  module Ingenico::Connect::SDK
4
-
5
4
  # Class responsible for facilitating communication with the Ingenico ePayments platform.
6
5
  # It combines the following classes to provide communication functionality:
7
6
  #
8
7
  # session:: {Ingenico::Connect::SDK::Session} that stores data for network communication and facilitates network communication
9
8
  # marshaller:: {Ingenico::Connect::SDK::Marshaller} that is used to marshal and unmarshal data to and from JSON format
10
9
  #
10
+ # @attr_reader [Ingenico::Connect::SDK::Marshaller] marshaller A Marshaller instance used by the communicator for serializing/deserializing to/from JSON
11
+ #
11
12
  class Communicator
12
13
  include Logging::LoggingCapable
13
14
 
14
15
  # Creates a new Communicator based on a session and marshaller.
15
16
  #
16
- # session:: {Ingenico::Connect::SDK::Session} that stores data for network communication and facilitates network communication
17
- # marshaller:: {Ingenico::Connect::SDK::Marshaller} that is used to marshal and unmarshal data to and from JSON format
17
+ # @param session [Ingenico::Connect::SDK::Session] session that stores data for network communication and facilitates network communication
18
+ # @param marshaller [Ingenico::Connect::SDK::Marshaller] used to marshal and unmarshal data to and from JSON format
18
19
  #
19
20
  def initialize(session, marshaller)
20
- if session.nil?
21
- raise ArgumentError('session is required')
22
- end
23
- if marshaller.nil?
24
- raise ArgumentError('marshaller is required')
25
- end
21
+ raise ArgumentError('session is required') if session.nil?
22
+ raise ArgumentError('marshaller is required') if marshaller.nil?
23
+
26
24
  @session = session
27
25
  @marshaller = marshaller
28
26
  end
29
27
 
30
- # Performs a GET request to the Ingenico ePayments platform and returns the response as a {Ingenico::Connect::SDK::Response} object.
28
+ # Performs a GET request to the Ingenico ePayments platform and returns the response as the given response type.
31
29
  #
32
- # Throws:
33
- # ResponseException:: Thrown if the request could not be fulfilled successfully.
34
- # This occurs for example if the request is not authenticated correctly
35
- # NotFoundException:: Thrown if the requested resource is not found
36
- # CommunicationException:: Thrown if there is an error in communicating with the Ingenico ePayments platform.
37
- # This occurs for example if a timeout occurs.
30
+ # @param relative_path [String] path relative to the session's API endpoint
31
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] optional array of request headers
32
+ # @param request_parameters [Ingenico::Connect::SDK::ParamRequest] optional request parameters
33
+ # @param response_type [Type] the response type.
34
+ # @param context [Ingenico::Connect::SDK::CallContext] optional call context.
35
+ # @return the response of the GET request as the given response type
36
+ # @raise [Ingenico::Connect::SDK::ResponseException] if the request could not be fulfilled successfully.
37
+ # This occurs for example if the request is not authenticated correctly
38
+ # @raise [Ingenico::Connect::SDK::NotFoundException] if the requested resource is not found
39
+ # @raise [Ingenico::Connect::SDK::CommunicationException] if there is an error in communicating with the Ingenico ePayments platform.
40
+ # This occurs for example if a timeout occurs.
38
41
  def get(relative_path, request_headers, request_parameters, response_type, context)
39
42
  connection = @session.connection
40
- if request_parameters.nil?
41
- request_parameter_list = nil
42
- else
43
- request_parameter_list = request_parameters.to_request_parameters
44
- end
43
+ request_parameter_list = request_parameters &&
44
+ request_parameters.to_request_parameters
45
45
  uri = to_absolute_uri(relative_path, request_parameter_list)
46
- if request_headers.nil?
47
- request_headers = []
46
+
47
+ request_headers = [] if request_headers.nil?
48
+ add_generic_headers('GET', uri, request_headers, context)
49
+
50
+ response_status_code, response_headers, response_body = nil
51
+ connection.get(uri, request_headers) do |status_code, headers, content|
52
+ response_status_code = status_code
53
+ response_headers = headers
54
+ response_body = content.read.force_encoding('UTF-8')
48
55
  end
56
+ process_response(response_body, response_status_code, response_headers, response_type, relative_path, context)
57
+ end
58
+
59
+ # Performs a GET request to the Ingenico ePayments platform and yields the response as the headers and body.
60
+ #
61
+ # @param relative_path [String] Path relative to the session's API endpoint
62
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] Optional array of request headers
63
+ # @param request_parameters [Ingenico::Connect::SDK::ParamRequest] Optional request parameters
64
+ # @param context [Ingenico::Connect::SDK::CallContext] Optional call context.
65
+ # @yield [Array<Ingenico::Connect::SDK::ResponseHeader>, IO] The response headers and body.
66
+ # @raise [Ingenico::Connect::SDK::ResponseException] if the request could not be fulfilled successfully.
67
+ # This occurs for example if the request is not authenticated correctly
68
+ # @raise [Ingenico::Connect::SDK::NotFoundException] if the requested resource is not found
69
+ # @raise [Ingenico::Connect::SDK::CommunicationException] if there is an error in communicating with the Ingenico ePayments platform.
70
+ # This occurs for example if a timeout occurs.
71
+ def get_with_binary_response(relative_path, request_headers, request_parameters, context)
72
+ connection = @session.connection
73
+ request_parameter_list = request_parameters &&
74
+ request_parameters.to_request_parameters
75
+ uri = to_absolute_uri(relative_path, request_parameter_list)
76
+
77
+ request_headers = [] if request_headers.nil?
49
78
  add_generic_headers('GET', uri, request_headers, context)
50
- response = connection.get(uri, request_headers)
51
- process_response(response, response_type, relative_path, context)
79
+
80
+ response_status_code, response_headers, response_body = nil
81
+ connection.get(uri, request_headers) do |status_code, headers, content|
82
+ response_status_code = status_code
83
+ response_headers = headers
84
+ response_body = process_binary_response(status_code, content, headers, context) do |h, c|
85
+ yield h, c
86
+ end
87
+ end
88
+ throw_exception_if_necessary(response_body, response_status_code, response_headers, relative_path)
52
89
  end
53
90
 
54
- # Performs a DELETE request to the Ingenico ePayments platform and returns the response as a {Ingenico::Connect::SDK::Response} object.
91
+ # Performs a DELETE request to the Ingenico ePayments platform and returns the response as the given response type.
55
92
  #
56
- # Throws:
57
- # ResponseException:: Thrown if the request could not be fulfilled successfully.
58
- # This occurs for example if the request is not authenticated correctly.
59
- # NotFoundException:: Thrown if the referred resource is not found.
60
- # CommunicationException:: Thrown if there is an error in communicating with the Ingenico ePayments platform.
61
- # This occurs for example if a timeout occurs.
93
+ # @param relative_path [String] Path relative to the session's API endpoint
94
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] Optional array of request headers
95
+ # @param request_parameters [Ingenico::Connect::SDK::ParamRequest] Optional request parameters
96
+ # @param response_type [Type] The response type.
97
+ # @param context [Ingenico::Connect::SDK::CallContext] Optional call context.
98
+ # @return The response of the DELETE request as the given response type
99
+ # @raise [Ingenico::Connect::SDK::ResponseException] if the request could not be fulfilled successfully.
100
+ # This occurs for example if the request is not authenticated correctly
101
+ # @raise [Ingenico::Connect::SDK::NotFoundException] if the requested resource is not found
102
+ # @raise [Ingenico::Connect::SDK::CommunicationException] if there is an error in communicating with the Ingenico ePayments platform.
103
+ # This occurs for example if a timeout occurs.
62
104
  def delete(relative_path, request_headers, request_parameters, response_type, context)
63
105
  connection = @session.connection
64
- if request_parameters.nil?
65
- request_parameter_list = nil
66
- else
67
- request_parameter_list = request_parameters.to_request_parameters
68
- end
106
+ request_parameter_list = request_parameters &&
107
+ request_parameters.to_request_parameters
69
108
  uri = to_absolute_uri(relative_path, request_parameter_list)
70
- if request_headers.nil?
71
- request_headers = []
72
- end
109
+ request_headers = [] if request_headers.nil?
73
110
  add_generic_headers('DELETE', uri, request_headers, context)
74
- response = connection.delete(uri, request_headers)
75
- process_response(response, response_type, relative_path, context)
111
+
112
+ response_status_code, response_headers, response_body = nil
113
+ connection.delete(uri, request_headers) do |status_code, headers, content|
114
+ response_status_code = status_code
115
+ response_headers = headers
116
+ response_body = content.read.force_encoding('UTF-8')
117
+ end
118
+ process_response(response_body, response_status_code, response_headers, response_type, relative_path, context)
76
119
  end
77
120
 
78
- # Performs a POST request to the Ingenico ePayments platform and returns the response as a {Ingenico::Connect::SDK::Response} object.
121
+ # Performs a DELETE request to the Ingenico ePayments platform and yields the response as the headers and body.
79
122
  #
80
- # Throws:
81
- # ResponseException:: Thrown if the request could not be fulfilled successfully.
82
- # This occurs for example if the request is not authenticated correctly.
83
- # NotFoundException:: Thrown if the referred resource is not found.
84
- # CommunicationException:: Thrown if there is an error in communicating with the Ingenico ePayments platform.
85
- # This occurs for example if a timeout occurs.
86
- def post(relative_path, request_headers, request_parameters, request_body,
87
- response_type, context)
123
+ # @param relative_path [String] Path relative to the session's API endpoint
124
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] Optional array of request headers
125
+ # @param request_parameters [Ingenico::Connect::SDK::ParamRequest] Optional request parameters
126
+ # @param context [Ingenico::Connect::SDK::CallContext] Optional call context.
127
+ # @yield [Array<Ingenico::Connect::SDK::ResponseHeader>, IO] The response headers and body.
128
+ # @raise [Ingenico::Connect::SDK::ResponseException] if the request could not be fulfilled successfully.
129
+ # This occurs for example if the request is not authenticated correctly
130
+ # @raise [Ingenico::Connect::SDK::NotFoundException] if the requested resource is not found
131
+ # @raise [Ingenico::Connect::SDK::CommunicationException] if there is an error in communicating with the Ingenico ePayments platform.
132
+ # This occurs for example if a timeout occurs.
133
+ def delete_with_binary_response(relative_path, request_headers, request_parameters, context)
88
134
  connection = @session.connection
89
- if request_parameters.nil?
90
- request_parameter_list = nil
91
- else
92
- request_parameter_list = request_parameters.to_request_parameters
93
- end
135
+ request_parameter_list = request_parameters &&
136
+ request_parameters.to_request_parameters
94
137
  uri = to_absolute_uri(relative_path, request_parameter_list)
95
- if request_headers.nil?
96
- request_headers = []
138
+ request_headers = [] if request_headers.nil?
139
+ add_generic_headers('DELETE', uri, request_headers, context)
140
+
141
+ response_status_code, response_headers, response_body = nil
142
+ connection.delete(uri, request_headers) do |status_code, headers, content|
143
+ response_status_code = status_code
144
+ response_headers = headers
145
+ response_body = process_binary_response(status_code, content, headers, context) do |h, c|
146
+ yield h, c
147
+ end
97
148
  end
98
- request_json = nil
99
- unless request_body.nil?
149
+ throw_exception_if_necessary(response_body, response_status_code, response_headers, relative_path)
150
+ end
151
+
152
+ # Performs a POST request to the Ingenico ePayments platform and returns the response as the given response type.
153
+ #
154
+ # @param relative_path [String] Path relative to the session's API endpoint
155
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] Optional array of request headers
156
+ # @param request_parameters [Ingenico::Connect::SDK::ParamRequest] Optional request parameters
157
+ # @param request_body [Ingenico::Connect::SDK::DataObject, Ingenico::Connect::SDK::MultipartFormDataObject, Ingenico::Connect::SDK::MultipartFormDataRequest]
158
+ # The optional request body
159
+ # @param response_type [Type] The response type.
160
+ # @param context [Ingenico::Connect::SDK::CallContext] Optional call context.
161
+ # @return The response of the POST request as the given response type
162
+ # @raise [Ingenico::Connect::SDK::ResponseException] if the request could not be fulfilled successfully.
163
+ # This occurs for example if the request is not authenticated correctly
164
+ # @raise [Ingenico::Connect::SDK::NotFoundException] if the requested resource is not found
165
+ # @raise [Ingenico::Connect::SDK::CommunicationException] if there is an error in communicating with the Ingenico ePayments platform.
166
+ # This occurs for example if a timeout occurs.
167
+ def post(relative_path, request_headers, request_parameters, request_body, response_type, context)
168
+ connection = @session.connection
169
+ request_parameter_list = request_parameters &&
170
+ request_parameters.to_request_parameters
171
+ uri = to_absolute_uri(relative_path, request_parameter_list)
172
+ request_headers = [] if request_headers.nil?
173
+
174
+ body = nil
175
+ if request_body.is_a? MultipartFormDataObject
176
+ request_headers.push(RequestHeader.new('Content-Type', request_body.content_type))
177
+ body = request_body
178
+ elsif request_body.is_a? MultipartFormDataRequest
179
+ multipart = request_body.to_multipart_form_data_object
180
+ request_headers.push(RequestHeader.new('Content-Type', multipart.content_type))
181
+ body = multipart
182
+ elsif !request_body.nil?
100
183
  request_headers.push(RequestHeader.new('Content-Type', 'application/json'))
101
- request_json = @marshaller.marshal(request_body)
184
+ body = @marshaller.marshal(request_body)
102
185
  end
186
+
103
187
  add_generic_headers('POST', uri, request_headers, context)
104
- response = connection.post(uri, request_headers, request_json)
105
- process_response(response, response_type, relative_path, context)
188
+
189
+ response_status_code, response_headers, response_body = nil
190
+ connection.post(uri, request_headers, body) do |status_code, headers, content|
191
+ response_status_code = status_code
192
+ response_headers = headers
193
+ response_body = content.read.force_encoding('UTF-8')
194
+ end
195
+ process_response(response_body, response_status_code, response_headers, response_type, relative_path, context)
106
196
  end
107
197
 
108
- # Performs a PUT request to the Ingenico ePayments platform and returns the response as a {Ingenico::Connect::SDK::Response} object.
198
+ # Performs a POST request to the Ingenico ePayments platform and yields the response as the headers and body.
109
199
  #
110
- # Throws:
111
- # ResponseException:: Thrown if the request could not be fulfilled successfully.
112
- # This occurs for example if the request is not authenticated correctly.
113
- # NotFoundException:: Thrown if the referred resource is not found.
114
- # CommunicationException:: Thrown if there is an error in communicating with the Ingenico ePayments platform.
115
- # This occurs for example if a timeout occurs.
116
- def put(relative_path, request_headers, request_parameters, request_body,
117
- response_type, context)
200
+ # @param relative_path [String] Path relative to the session's API endpoint
201
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] Optional array of request headers
202
+ # @param request_parameters [Ingenico::Connect::SDK::ParamRequest] Optional request parameters
203
+ # @param request_body [Ingenico::Connect::SDK::DataObject, Ingenico::Connect::SDK::MultipartFormDataObject, Ingenico::Connect::SDK::MultipartFormDataRequest]
204
+ # The optional request body
205
+ # @param context [Ingenico::Connect::SDK::CallContext] Optional call context.
206
+ # @yield [Array<Ingenico::Connect::SDK::ResponseHeader>, IO] The response headers and body.
207
+ # @raise [Ingenico::Connect::SDK::ResponseException] if the request could not be fulfilled successfully.
208
+ # This occurs for example if the request is not authenticated correctly
209
+ # @raise [Ingenico::Connect::SDK::NotFoundException] if the requested resource is not found
210
+ # @raise [Ingenico::Connect::SDK::CommunicationException] if there is an error in communicating with the Ingenico ePayments platform.
211
+ # This occurs for example if a timeout occurs.
212
+ def post_with_binary_response(relative_path, request_headers, request_parameters, request_body, context)
118
213
  connection = @session.connection
119
- if request_parameters.nil?
120
- request_parameter_list = nil
121
- else
122
- request_parameter_list = request_parameters.to_request_parameters
214
+ request_parameter_list = request_parameters &&
215
+ request_parameters.to_request_parameters
216
+ uri = to_absolute_uri(relative_path, request_parameter_list)
217
+ request_headers = [] if request_headers.nil?
218
+
219
+ body = nil
220
+ if request_body.is_a? MultipartFormDataObject
221
+ request_headers.push(RequestHeader.new('Content-Type', request_body.content_type))
222
+ body = request_body
223
+ elsif request_body.is_a? MultipartFormDataRequest
224
+ multipart = request_body.to_multipart_form_data_object
225
+ request_headers.push(RequestHeader.new('Content-Type', multipart.content_type))
226
+ body = multipart
227
+ elsif !request_body.nil?
228
+ request_headers.push(RequestHeader.new('Content-Type', 'application/json'))
229
+ body = @marshaller.marshal(request_body)
230
+ end
231
+ add_generic_headers('POST', uri, request_headers, context)
232
+
233
+ response_status_code, response_headers, response_body = nil
234
+ connection.post(uri, request_headers, body) do |status_code, headers, content|
235
+ response_status_code = status_code
236
+ response_headers = headers
237
+ response_body = process_binary_response(status_code, content, headers, context) do |h, c|
238
+ yield h, c
239
+ end
123
240
  end
241
+ throw_exception_if_necessary(response_body, response_status_code, response_headers, relative_path)
242
+ end
243
+
244
+ # Performs a PUT request to the Ingenico ePayments platform and returns the response as the given response type.
245
+ #
246
+ # @param relative_path [String] Path relative to the session's API endpoint
247
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] Optional array of request headers
248
+ # @param request_parameters [Ingenico::Connect::SDK::ParamRequest] Optional request parameters
249
+ # @param request_body [Ingenico::Connect::SDK::DataObject, Ingenico::Connect::SDK::MultipartFormDataObject, Ingenico::Connect::SDK::MultipartFormDataRequest]
250
+ # The optional request body
251
+ # @param response_type [Type] The response type.
252
+ # @param context [Ingenico::Connect::SDK::CallContext] Optional call context.
253
+ # @return The response of the PUT request as the given response type
254
+ # @raise [Ingenico::Connect::SDK::ResponseException] if the request could not be fulfilled successfully.
255
+ # This occurs for example if the request is not authenticated correctly
256
+ # @raise [Ingenico::Connect::SDK::NotFoundException] if the requested resource is not found
257
+ # @raise [Ingenico::Connect::SDK::CommunicationException] if there is an error in communicating with the Ingenico ePayments platform.
258
+ # This occurs for example if a timeout occurs.
259
+ def put(relative_path, request_headers, request_parameters, request_body, response_type, context)
260
+ connection = @session.connection
261
+ request_parameter_list = request_parameters &&
262
+ request_parameters.to_request_parameters
124
263
  uri = to_absolute_uri(relative_path, request_parameter_list)
125
- if request_headers.nil?
126
- request_headers = []
264
+ request_headers = [] if request_headers.nil?
265
+
266
+ body = nil
267
+ if request_body.is_a? MultipartFormDataObject
268
+ request_headers.push(RequestHeader.new('Content-Type', request_body.content_type))
269
+ body = request_body
270
+ elsif request_body.is_a? MultipartFormDataRequest
271
+ multipart = request_body.to_multipart_form_data_object
272
+ request_headers.push(RequestHeader.new('Content-Type', multipart.content_type))
273
+ body = multipart
274
+ elsif !request_body.nil?
275
+ request_headers.push(RequestHeader.new('Content-Type', 'application/json'))
276
+ body = @marshaller.marshal(request_body)
127
277
  end
128
- request_json = nil
129
- unless request_body.nil?
278
+ add_generic_headers('PUT', uri, request_headers, context)
279
+
280
+ response_status_code, response_headers, response_body = nil
281
+ connection.put(uri, request_headers, body) do |status_code, headers, content|
282
+ response_status_code = status_code
283
+ response_headers = headers
284
+ response_body = content.read.force_encoding('UTF-8')
285
+ end
286
+ process_response(response_body, response_status_code, response_headers, response_type, relative_path, context)
287
+ end
288
+
289
+ # Performs a PUT request to the Ingenico ePayments platform and yields the response as the headers and body.
290
+ #
291
+ # @param relative_path [String] Path relative to the session's API endpoint
292
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] Optional array of request headers
293
+ # @param request_parameters [Ingenico::Connect::SDK::ParamRequest] Optional request parameters
294
+ # @param request_body [Ingenico::Connect::SDK::DataObject, Ingenico::Connect::SDK::MultipartFormDataObject, Ingenico::Connect::SDK::MultipartFormDataRequest]
295
+ # The optional request body
296
+ # @param context [Ingenico::Connect::SDK::CallContext] Optional call context.
297
+ # @yield [Array<Ingenico::Connect::SDK::ResponseHeader>, IO] The response headers and body.
298
+ # @raise [Ingenico::Connect::SDK::ResponseException] if the request could not be fulfilled successfully.
299
+ # This occurs for example if the request is not authenticated correctly
300
+ # @raise [Ingenico::Connect::SDK::NotFoundException] if the requested resource is not found
301
+ # @raise [Ingenico::Connect::SDK::CommunicationException] if there is an error in communicating with the Ingenico ePayments platform.
302
+ # This occurs for example if a timeout occurs.
303
+ def put_with_binary_response(relative_path, request_headers, request_parameters, request_body, context)
304
+ connection = @session.connection
305
+ request_parameter_list = request_parameters &&
306
+ request_parameters.to_request_parameters
307
+ uri = to_absolute_uri(relative_path, request_parameter_list)
308
+ request_headers = [] if request_headers.nil?
309
+
310
+ body = nil
311
+ if request_body.is_a? MultipartFormDataObject
312
+ request_headers.push(RequestHeader.new('Content-Type', request_body.content_type))
313
+ body = request_body
314
+ elsif request_body.is_a? MultipartFormDataRequest
315
+ multipart = request_body.to_multipart_form_data_object
316
+ request_headers.push(RequestHeader.new('Content-Type', multipart.content_type))
317
+ body = multipart
318
+ elsif !request_body.nil?
130
319
  request_headers.push(RequestHeader.new('Content-Type', 'application/json'))
131
- request_json = @marshaller.marshal(request_body)
320
+ body = @marshaller.marshal(request_body)
132
321
  end
133
322
  add_generic_headers('PUT', uri, request_headers, context)
134
- response = connection.put(uri, request_headers, request_json)
135
- process_response(response, response_type, relative_path, context)
323
+
324
+ response_status_code, response_headers, response_body = nil
325
+ connection.put(uri, request_headers, body) do |status_code, headers, content|
326
+ response_status_code = status_code
327
+ response_headers = headers
328
+ response_body = process_binary_response(status_code, content, headers, context) do |h, c|
329
+ yield h, c
330
+ end
331
+ end
332
+ throw_exception_if_necessary(response_body, response_status_code, response_headers, relative_path)
136
333
  end
137
334
 
138
335
  # Closes any connections idle for more than _idle_time_ seconds.
139
336
  # Will not have any effect if the connection is not a pooled connection (an instance of {Ingenico::Connect::SDK::PooledConnection}).
140
337
  def close_idle_connections(idle_time)
141
338
  connection = @session.connection
142
- if connection.is_a? PooledConnection
143
- connection.close_idle_connections(idle_time)
144
- end
339
+ connection.close_idle_connections(idle_time) if
340
+ connection.is_a? PooledConnection
145
341
  end
146
342
 
147
343
  # Closes any connections that have expired.
148
344
  # Will not have any effect if the connection is not a pooled connection (an instance of {Ingenico::Connect::SDK::PooledConnection}).
149
345
  def close_expired_connections
150
346
  connection = @session.connection
151
- if connection.is_a? PooledConnection
152
- connection.close_expired_connections
153
- end
347
+ connection.close_expired_connections if connection.is_a? PooledConnection
154
348
  end
155
349
 
156
350
  # Enables logging outgoing requests and incoming responses by registering the _communicator_logger_.
157
351
  # Note that only one logger can be registered at a time and calling _enable_logging_
158
352
  # a second time will override the old logger instance with the new one.
159
353
  #
160
- # communicator_logger:: The {Ingenico::Connect::SDK::Logging::CommunicatorLogger} the requests and responses are logged to
161
- #
354
+ # @param communicator_logger [Ingenico::Connect::SDK::Logging::CommunicatorLogger] The communicator logger the requests and responses are logged to
162
355
  def enable_logging(communicator_logger)
163
356
  @session.connection.enable_logging(communicator_logger)
164
357
  end
@@ -175,30 +368,32 @@ module Ingenico::Connect::SDK
175
368
  @session.connection.close
176
369
  end
177
370
 
178
- # A {Ingenico::Connect::SDK::Marshaller} instance used by the communicator for serializing/deserializing to/from JSON
179
371
  attr_reader :marshaller
180
372
 
181
373
  protected
182
374
 
183
- # Constructs a full url using the base url stored in the {Ingenico::Connect::SDK::Session} and the given relative path and request_parameters.
184
- # The returned url is a *URI* object.
375
+ # Constructs a full URL using the base URL stored in the {Ingenico::Connect::SDK::Session} and the given relative path and request_parameters.
376
+ # The returned URL is a *URI* object.
185
377
  #
186
- # relative_path:: The relative path of the url in string form.
187
- # request_parameters:: A list of request parameters that each have #name and #value
188
- # which represent the parameter name and value respectively.
378
+ # @param relative_path [String] The relative path of the URL.
379
+ # @param request_parameters [Array<Ingenico::Connect::SDK::RequestParam>] A list of request parameters that each have #name and #value
380
+ # which represent the parameter name and value respectively.
189
381
  def to_absolute_uri(relative_path, request_parameters)
190
382
  api_endpoint = @session.api_endpoint
191
- unless api_endpoint.path.nil? || api_endpoint.path.empty?
192
- raise RuntimeError('api_endpoint should not contain a path')
193
- end
194
- unless api_endpoint.userinfo.nil? && api_endpoint.query.nil? && api_endpoint.fragment.nil?
195
- raise RuntimeError('api_endpoint should not contain user info, query or fragment')
383
+ raise RuntimeError('api_endpoint should not contain a path') unless
384
+ api_endpoint.path.nil? || api_endpoint.path.empty?
385
+
386
+ unless api_endpoint.userinfo.nil? && api_endpoint.query.nil? &&
387
+ api_endpoint.fragment.nil?
388
+ raise RuntimeError(
389
+ 'api_endpoint should not contain user info, query or fragment'
390
+ )
196
391
  end
197
- absolute_path = relative_path.start_with?('/')? relative_path : '/'+relative_path
392
+ absolute_path = relative_path.start_with?('/') ? relative_path : '/' + relative_path
198
393
  uri = URI::HTTP.new(api_endpoint.scheme, nil, api_endpoint.host,
199
394
  api_endpoint.port, nil, absolute_path, nil, nil, nil)
200
395
  unless request_parameters.nil?
201
- for nvp in request_parameters
396
+ request_parameters.each do |nvp|
202
397
  parameters = URI.decode_www_form(uri.query || '') << [nvp.name, nvp.value]
203
398
  uri.query = URI.encode_www_form(parameters)
204
399
  end
@@ -207,16 +402,15 @@ module Ingenico::Connect::SDK
207
402
  end
208
403
 
209
404
  # Adds several standard headers to the http headers.
210
- #
211
- # http_method:: 'GET', 'DELETE', 'POST' or 'PUT' depending on the HTTP method being used
212
- # uri:: The full URI as a URI object to the Ingenico ePayments platform,
213
- # including the relative path and request parameters.
214
- # request_headers:: List of {Ingenico::Connect::SDK::RequestHeader} in which which new headers will be added
215
- # context:: {Ingenico::Connect::SDK::CallContext} object that will be used to produce
216
- # an Idempotence header to prevent accidental request duplication.
217
- #
218
405
  # This method will add the 'Date' and 'Authorization' header;
219
406
  # the 'X-GCS-Idempotence-Key' header will also be added if an idempotence context is given
407
+ #
408
+ # @param http_method [String] 'GET', 'DELETE', 'POST' or 'PUT' depending on the HTTP method being used
409
+ # @param uri [URI::HTTP] The full URI to the Ingenico ePayments platform,
410
+ # including the relative path and request parameters.
411
+ # @param request_headers [Array<Ingenico::Connect::SDK::RequestHeader>] List of request headers in which which new headers will be added
412
+ # @param context [Ingenico::Connect::SDK::CallContext] object that will be used to produce
413
+ # an Idempotence header to prevent accidental request duplication.
220
414
  def add_generic_headers(http_method, uri, request_headers, context = nil)
221
415
  request_headers.concat(@session.meta_data_provider.meta_data_headers)
222
416
  request_headers.push(RequestHeader.new('Date', get_header_date_string))
@@ -232,15 +426,26 @@ module Ingenico::Connect::SDK
232
426
  Time.now.utc.strftime('%a, %d %b %Y %H:%M:%S GMT')
233
427
  end
234
428
 
235
- def process_response(response, response_type, request_path, context)
236
- update_context(response, context) unless context.nil?
429
+ def process_response(body, status, headers, response_type, request_path, context)
430
+ update_context(headers, context) unless context.nil?
237
431
 
238
- throw_exception_if_necessary(response, request_path)
239
- @marshaller.unmarshal(response.body, response_type)
432
+ throw_exception_if_necessary(body, status, headers, request_path)
433
+ @marshaller.unmarshal(body, response_type)
434
+ end
435
+
436
+ def process_binary_response(status, body, headers, context)
437
+ update_context(response.headers, context) unless context.nil?
438
+
439
+ if status < 400
440
+ yield headers, body
441
+ ''
442
+ else
443
+ body.read.force_encoding('UTF-8')
444
+ end
240
445
  end
241
446
 
242
- def update_context(response, context)
243
- idempotence_request_timestamp_value = response.get_header_value('X-GCS-Idempotence-Request-Timestamp')
447
+ def update_context(headers, context)
448
+ idempotence_request_timestamp_value = ResponseHeader.get_header_value(headers, 'X-GCS-Idempotence-Request-Timestamp')
244
449
  if idempotence_request_timestamp_value.nil?
245
450
  context.idempotence_request_timestamp = nil
246
451
  else
@@ -248,30 +453,28 @@ module Ingenico::Connect::SDK
248
453
  end
249
454
  end
250
455
 
251
- def throw_exception_if_necessary(response, request_path)
252
- status_code = response.status_code
456
+ def throw_exception_if_necessary(body, status_code, headers, request_path)
253
457
  if status_code < 200 || status_code >= 300
254
- body = response.body
255
- if !body.nil? && !is_json(response)
256
- cause = ResponseException.new(response)
458
+ if !body.nil? && !is_json(headers)
459
+ cause = ResponseException.new(status_code, headers, body)
257
460
  if status_code == 404
258
461
  raise NotFoundException.new(cause, 'The requested resource was not found; invalid path: ' +
259
462
  request_path)
260
463
  else
261
- raise CommunicationException.new(cause)
464
+ raise CommunicationException, cause
262
465
  end
263
466
  else
264
- raise ResponseException.new(response)
467
+ raise ResponseException.new(status_code, headers, body)
265
468
  end
266
469
  end
267
470
  end
268
471
 
269
472
  private
270
473
 
271
- def is_json(response)
272
- content_type = response.get_header_value('Content-Type')
474
+ def is_json(headers)
475
+ content_type = ResponseHeader.get_header_value(headers, 'Content-Type')
273
476
  content_type.nil? || 'application/json'.casecmp(content_type) == 0 ||
274
- content_type.downcase.start_with?('application/json')
477
+ content_type.downcase.start_with?('application/json')
275
478
  end
276
479
  end
277
480
  end