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.
- checksums.yaml +4 -4
- data/connect-sdk-ruby.gemspec +1 -1
- data/examples/merchant/captures/get_capture_example.rb +1 -1
- data/examples/merchant/disputes/cancel_dispute_example.rb +1 -1
- data/examples/merchant/disputes/get_dispute_example.rb +1 -1
- data/examples/merchant/disputes/submit_dispute_example.rb +1 -1
- data/examples/merchant/disputes/upload_dispute_file_example.rb +30 -0
- data/examples/merchant/{products/get_payment_product_public_key_example.rb → files/get_file_example.rb} +7 -1
- data/examples/merchant/hostedcheckouts/create_hosted_checkout_example.rb +1 -1
- data/examples/merchant/hostedcheckouts/get_hosted_checkout_example.rb +1 -1
- data/examples/merchant/hostedmandatemanagements/create_hosted_mandate_management_example.rb +1 -1
- data/examples/merchant/hostedmandatemanagements/get_hosted_mandate_management_example.rb +1 -1
- data/examples/merchant/mandates/block_mandate_example.rb +1 -1
- data/examples/merchant/mandates/create_mandate_example.rb +1 -1
- data/examples/merchant/mandates/create_mandate_with_reference_example.rb +1 -1
- data/examples/merchant/mandates/get_mandate_example.rb +1 -1
- data/examples/merchant/mandates/revoke_mandate_example.rb +1 -1
- data/examples/merchant/mandates/unblock_mandate_example.rb +1 -1
- data/examples/merchant/payments/approve_payment_example.rb +1 -1
- data/examples/merchant/payments/cancel_approval_payment_example.rb +1 -1
- data/examples/merchant/payments/cancel_payment_example.rb +1 -1
- data/examples/merchant/payments/capture_payment_example.rb +1 -1
- data/examples/merchant/payments/complete_payment_example.rb +1 -1
- data/examples/merchant/payments/create_payment_dispute_example.rb +1 -1
- data/examples/merchant/payments/create_payment_example.rb +3 -3
- data/examples/merchant/payments/find_payments_example.rb +1 -1
- data/examples/merchant/payments/get_payment_captures_example.rb +1 -1
- data/examples/merchant/payments/get_payment_disputes_example.rb +1 -1
- data/examples/merchant/payments/get_payment_example.rb +1 -1
- data/examples/merchant/payments/get_refunds_example.rb +1 -1
- data/examples/merchant/payments/get_third_party_status_example.rb +1 -1
- data/examples/merchant/payments/process_challenged_payment_example.rb +1 -1
- data/examples/merchant/payments/refund_payment_example.rb +2 -2
- data/examples/merchant/payments/tokenize_payment_example.rb +1 -1
- data/examples/merchant/payouts/approve_payout_example.rb +1 -1
- data/examples/merchant/payouts/cancel_approval_payout_example.rb +1 -1
- data/examples/merchant/payouts/cancel_payout_example.rb +1 -1
- data/examples/merchant/payouts/create_payout_example.rb +2 -2
- data/examples/merchant/payouts/find_payouts_example.rb +1 -1
- data/examples/merchant/payouts/get_payout_example.rb +1 -1
- data/examples/merchant/productgroups/get_device_fingerprint_for_groups_example.rb +1 -1
- data/examples/merchant/productgroups/get_payment_product_group_example.rb +1 -1
- data/examples/merchant/productgroups/get_payment_product_groups_example.rb +1 -1
- data/examples/merchant/products/get_customer_details_example.rb +1 -1
- data/examples/merchant/products/get_device_fingerprint_example.rb +1 -1
- data/examples/merchant/products/get_directory_example.rb +1 -1
- data/examples/merchant/products/get_networks_example.rb +1 -1
- data/examples/merchant/products/get_payment_product_example.rb +1 -1
- data/examples/merchant/products/get_payment_products_example.rb +1 -1
- data/examples/merchant/refunds/approve_refund_example.rb +1 -1
- data/examples/merchant/refunds/cancel_approval_refund_example.rb +1 -1
- data/examples/merchant/refunds/cancel_refund_example.rb +1 -1
- data/examples/merchant/refunds/find_refunds_example.rb +1 -1
- data/examples/merchant/refunds/get_refund_example.rb +1 -1
- data/examples/merchant/riskassessments/risk_assessment_bank_account_example.rb +1 -1
- data/examples/merchant/riskassessments/risk_assessment_cards_example.rb +1 -1
- data/examples/merchant/services/convert_amount_example.rb +1 -1
- data/examples/merchant/services/convert_bank_account_example.rb +1 -1
- data/examples/merchant/services/get_privacy_policy_example.rb +1 -1
- data/examples/merchant/services/iin_details_example.rb +1 -1
- data/examples/merchant/services/test_connection_example.rb +1 -1
- data/examples/merchant/sessions/create_session_example.rb +1 -1
- data/examples/merchant/tokens/approve_sepa_direct_debit_token_example.rb +1 -1
- data/examples/merchant/tokens/create_token_example.rb +1 -1
- data/examples/merchant/tokens/delete_token_example.rb +1 -1
- data/examples/merchant/tokens/get_token_example.rb +1 -1
- data/examples/merchant/tokens/update_token_example.rb +1 -1
- data/lib/ingenico/connect/sdk.rb +3 -1
- data/lib/ingenico/connect/sdk/api_exception.rb +12 -14
- data/lib/ingenico/connect/sdk/api_resource.rb +14 -13
- data/lib/ingenico/connect/sdk/authenticator.rb +5 -4
- data/lib/ingenico/connect/sdk/call_context.rb +6 -6
- data/lib/ingenico/connect/sdk/client.rb +12 -11
- data/lib/ingenico/connect/sdk/communication_exception.rb +2 -1
- data/lib/ingenico/connect/sdk/communicator.rb +331 -128
- data/lib/ingenico/connect/sdk/communicator_configuration.rb +21 -39
- data/lib/ingenico/connect/sdk/connection.rb +16 -6
- data/lib/ingenico/connect/sdk/data_object.rb +2 -13
- data/lib/ingenico/connect/sdk/declined_payment_exception.rb +1 -1
- data/lib/ingenico/connect/sdk/declined_payout_exception.rb +1 -1
- data/lib/ingenico/connect/sdk/declined_refund_exception.rb +1 -1
- data/lib/ingenico/connect/sdk/defaultimpl/authorization_type.rb +2 -1
- data/lib/ingenico/connect/sdk/defaultimpl/default_authenticator.rb +9 -7
- data/lib/ingenico/connect/sdk/defaultimpl/default_connection.rb +212 -68
- data/lib/ingenico/connect/sdk/defaultimpl/default_marshaller.rb +2 -2
- data/lib/ingenico/connect/sdk/domain/capture/capture.rb +12 -15
- data/lib/ingenico/connect/sdk/domain/capture/capture_output.rb +43 -60
- data/lib/ingenico/connect/sdk/domain/capture/capture_status_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/capture/captures_response.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/definitions/abstract_order_status.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/definitions/abstract_payment_method_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/definitions/additional_order_input_airline_data.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/definitions/address.rb +25 -24
- data/lib/ingenico/connect/sdk/domain/definitions/airline_data.rb +76 -79
- data/lib/ingenico/connect/sdk/domain/definitions/airline_flight_leg.rb +62 -61
- data/lib/ingenico/connect/sdk/domain/definitions/airline_passenger.rb +13 -12
- data/lib/ingenico/connect/sdk/domain/definitions/amount_of_money.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/definitions/bank_account.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/definitions/bank_account_bban.rb +19 -18
- data/lib/ingenico/connect/sdk/domain/definitions/bank_account_iban.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/definitions/card.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/definitions/card_essentials.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/definitions/card_fraud_results.rb +15 -18
- data/lib/ingenico/connect/sdk/domain/definitions/card_without_cvv.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/definitions/company_information.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/definitions/contact_details_base.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/definitions/customer_base.rb +12 -13
- data/lib/ingenico/connect/sdk/domain/definitions/fraud_fields.rb +70 -75
- data/lib/ingenico/connect/sdk/domain/definitions/fraud_fields_shipping_details.rb +14 -13
- data/lib/ingenico/connect/sdk/domain/definitions/fraud_results.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/definitions/fraud_results_retail_decisions.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/definitions/fraugster_results.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/definitions/key_value_pair.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/definitions/order_status_output.rb +17 -18
- data/lib/ingenico/connect/sdk/domain/definitions/payment_product_filter.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/definitions/personal_name_base.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/definitions/redirect_data_base.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/definitions/result_do_risk_assessment.rb +15 -18
- data/lib/ingenico/connect/sdk/domain/definitions/retail_decisions_cc_fraud_check_output.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/definitions/validation_bank_account_check.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/definitions/validation_bank_account_output.rb +17 -18
- data/lib/ingenico/connect/sdk/domain/dispute/create_dispute_request.rb +17 -18
- data/lib/ingenico/connect/sdk/domain/dispute/dispute.rb +18 -21
- data/lib/ingenico/connect/sdk/domain/dispute/dispute_creation_detail.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/dispute/dispute_output.rb +32 -39
- data/lib/ingenico/connect/sdk/domain/dispute/dispute_reference.rb +16 -15
- data/lib/ingenico/connect/sdk/domain/dispute/dispute_status_output.rb +13 -12
- data/lib/ingenico/connect/sdk/domain/dispute/disputes_response.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/dispute/upload_dispute_file_response.rb +39 -0
- data/lib/ingenico/connect/sdk/domain/errors/api_error.rb +22 -21
- data/lib/ingenico/connect/sdk/domain/errors/error_response.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/file/hosted_file.rb +13 -12
- data/lib/ingenico/connect/sdk/domain/hostedcheckout/create_hosted_checkout_request.rb +45 -66
- data/lib/ingenico/connect/sdk/domain/hostedcheckout/create_hosted_checkout_response.rb +17 -18
- data/lib/ingenico/connect/sdk/domain/hostedcheckout/created_payment_output.rb +23 -28
- data/lib/ingenico/connect/sdk/domain/hostedcheckout/displayed_data.rb +11 -12
- data/lib/ingenico/connect/sdk/domain/hostedcheckout/get_hosted_checkout_response.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/hostedcheckout/hosted_checkout_specific_input.rb +29 -30
- data/lib/ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_method_specific_input_hosted_checkout.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/hostedcheckout/mobile_payment_product320_specific_input_hosted_checkout.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/hostedcheckout/payment_product_filters_hosted_checkout.rb +12 -15
- data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/create_hosted_mandate_management_request.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/create_hosted_mandate_management_response.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/get_hosted_mandate_management_response.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/hosted_mandate_info.rb +20 -21
- data/lib/ingenico/connect/sdk/domain/hostedmandatemanagement/hosted_mandate_management_specific_input.rb +13 -12
- data/lib/ingenico/connect/sdk/domain/mandates/create_mandate_base.rb +23 -24
- data/lib/ingenico/connect/sdk/domain/mandates/create_mandate_response.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/mandates/create_mandate_with_return_url.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/mandates/get_mandate_response.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/mandates/mandate_address.rb +16 -15
- data/lib/ingenico/connect/sdk/domain/mandates/mandate_contact_details.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/mandates/mandate_customer.rb +20 -27
- data/lib/ingenico/connect/sdk/domain/mandates/mandate_merchant_action.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/mandates/mandate_personal_information.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/mandates/mandate_personal_name.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/mandates/mandate_response.rb +20 -21
- data/lib/ingenico/connect/sdk/domain/metadata/shopping_cart_extension.rb +8 -8
- data/lib/ingenico/connect/sdk/domain/payment/abstract_bank_transfer_payment_method_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/abstract_card_payment_method_specific_input.rb +44 -45
- data/lib/ingenico/connect/sdk/domain/payment/abstract_e_invoice_payment_method_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/abstract_payment_method_specific_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/abstract_redirect_payment_method_specific_input.rb +16 -15
- data/lib/ingenico/connect/sdk/domain/payment/abstract_redirect_payment_product840_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/abstract_sepa_direct_debit_payment_product771_specific_input.rb +5 -4
- data/lib/ingenico/connect/sdk/domain/payment/abstract_three_d_secure.rb +21 -24
- data/lib/ingenico/connect/sdk/domain/payment/additional_order_input.rb +20 -25
- data/lib/ingenico/connect/sdk/domain/payment/address_personal.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/amount_breakdown.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/approve_payment_card_payment_method_specific_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/approve_payment_mobile_payment_method_specific_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/approve_payment_payment_method_specific_input.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/approve_payment_request.rb +16 -21
- data/lib/ingenico/connect/sdk/domain/payment/browser_data.rb +22 -21
- data/lib/ingenico/connect/sdk/domain/payment/cancel_approval_payment_response.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/cancel_payment_card_payment_method_specific_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/cancel_payment_mobile_payment_method_specific_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/cancel_payment_response.rb +13 -18
- data/lib/ingenico/connect/sdk/domain/payment/capture_payment_request.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/card_payment_method_specific_input.rb +21 -26
- data/lib/ingenico/connect/sdk/domain/payment/card_payment_method_specific_input_base.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/card_payment_method_specific_output.rb +19 -24
- data/lib/ingenico/connect/sdk/domain/payment/card_recurrence_details.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/payment/cash_payment_method_specific_input.rb +30 -43
- data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1503_specific_input.rb +6 -5
- data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1504_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1521_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1522_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1523_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1524_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/cash_payment_product1526_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/complete_payment_card_payment_method_specific_input.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/complete_payment_request.rb +13 -18
- data/lib/ingenico/connect/sdk/domain/payment/contact_details.rb +13 -12
- data/lib/ingenico/connect/sdk/domain/payment/create_payment_request.rb +52 -75
- data/lib/ingenico/connect/sdk/domain/payment/create_payment_result.rb +13 -18
- data/lib/ingenico/connect/sdk/domain/payment/customer.rb +38 -49
- data/lib/ingenico/connect/sdk/domain/payment/customer_account.rb +40 -45
- data/lib/ingenico/connect/sdk/domain/payment/customer_account_authentication.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/customer_approve_payment.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/customer_device.rb +26 -27
- data/lib/ingenico/connect/sdk/domain/payment/customer_payment_activity.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/payment/decrypted_payment_data.rb +22 -21
- data/lib/ingenico/connect/sdk/domain/payment/device_render_options.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/e_invoice_payment_method_specific_input.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/payment/e_invoice_payment_method_specific_output.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/e_invoice_payment_product9000_specific_input.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/payment/e_invoice_payment_product9000_specific_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/external_cardholder_authentication_data.rb +25 -24
- data/lib/ingenico/connect/sdk/domain/payment/find_payments_response.rb +14 -15
- data/lib/ingenico/connect/sdk/domain/payment/gift_card_purchase.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/payment/hosted_checkout_specific_output.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/invoice_payment_method_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/level3_summary_data.rb +14 -13
- data/lib/ingenico/connect/sdk/domain/payment/line_item.rb +18 -25
- data/lib/ingenico/connect/sdk/domain/payment/line_item_invoice_data.rb +16 -15
- data/lib/ingenico/connect/sdk/domain/payment/line_item_level3_interchange_information.rb +25 -24
- data/lib/ingenico/connect/sdk/domain/payment/merchant.rb +11 -12
- data/lib/ingenico/connect/sdk/domain/payment/merchant_action.rb +27 -36
- data/lib/ingenico/connect/sdk/domain/payment/mobile_payment_data.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/mobile_payment_method_specific_input.rb +17 -18
- data/lib/ingenico/connect/sdk/domain/payment/mobile_payment_method_specific_output.rb +19 -24
- data/lib/ingenico/connect/sdk/domain/payment/mobile_three_d_secure_challenge_parameters.rb +13 -12
- data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_method_specific_input.rb +27 -30
- data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_method_specific_output.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_product705_specific_input.rb +11 -12
- data/lib/ingenico/connect/sdk/domain/payment/non_sepa_direct_debit_payment_product730_specific_input.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/order.rb +35 -50
- data/lib/ingenico/connect/sdk/domain/payment/order_approve_payment.rb +13 -18
- data/lib/ingenico/connect/sdk/domain/payment/order_invoice_data.rb +14 -15
- data/lib/ingenico/connect/sdk/domain/payment/order_line_details.rb +34 -33
- data/lib/ingenico/connect/sdk/domain/payment/order_output.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/payment/order_references.rb +14 -15
- data/lib/ingenico/connect/sdk/domain/payment/order_references_approve_payment.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/order_type_information.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/payment/payment.rb +16 -21
- data/lib/ingenico/connect/sdk/domain/payment/payment_account_on_file.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/payment_approval_response.rb +18 -25
- data/lib/ingenico/connect/sdk/domain/payment/payment_creation_output.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/payment/payment_creation_references.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/payment_error_response.rb +12 -15
- data/lib/ingenico/connect/sdk/domain/payment/payment_output.rb +43 -60
- data/lib/ingenico/connect/sdk/domain/payment/payment_product3201_specific_output.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/payment_product771_specific_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/payment_product836_specific_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/payment_product840_customer_account.rb +31 -30
- data/lib/ingenico/connect/sdk/domain/payment/payment_product840_specific_output.rb +13 -18
- data/lib/ingenico/connect/sdk/domain/payment/payment_product863_third_party_data.rb +22 -21
- data/lib/ingenico/connect/sdk/domain/payment/payment_references.rb +19 -18
- data/lib/ingenico/connect/sdk/domain/payment/payment_status_output.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/payment/personal_information.rb +11 -12
- data/lib/ingenico/connect/sdk/domain/payment/personal_name.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/protection_eligibility.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_input.rb +36 -49
- data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_input_base.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_method_specific_output.rb +24 -33
- data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product809_specific_input.rb +8 -7
- data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product816_specific_input.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product840_specific_input.rb +8 -7
- data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product861_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product863_specific_input.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/redirect_payment_product882_specific_input.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/redirection_data.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/refund_e_wallet_method_specific_output.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/refund_method_specific_output.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/payment/refund_mobile_method_specific_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/refund_output.rb +27 -36
- data/lib/ingenico/connect/sdk/domain/payment/refund_payment_product840_customer_account.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/payment/refund_payment_product840_specific_output.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/sdk_data_input.rb +26 -27
- data/lib/ingenico/connect/sdk/domain/payment/sdk_data_output.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/seller.rb +29 -30
- data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_method_specific_input.rb +23 -24
- data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_method_specific_input_base.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_method_specific_output.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_product771_specific_input.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/payment/sepa_direct_debit_payment_product771_specific_input_base.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/payment/shipping.rb +26 -27
- data/lib/ingenico/connect/sdk/domain/payment/shopping_cart.rb +22 -27
- data/lib/ingenico/connect/sdk/domain/payment/third_party_data.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/payment/third_party_status_response.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payment/three_d_secure.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/payment/three_d_secure_data.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/payment/three_d_secure_results.rb +27 -30
- data/lib/ingenico/connect/sdk/domain/payment/tokenize_payment_request.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payout/approve_payout_request.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/payout/bank_transfer_payout_method_specific_input.rb +22 -27
- data/lib/ingenico/connect/sdk/domain/payout/card_payout_method_specific_input.rb +11 -12
- data/lib/ingenico/connect/sdk/domain/payout/create_payout_request.rb +44 -57
- data/lib/ingenico/connect/sdk/domain/payout/find_payouts_response.rb +14 -15
- data/lib/ingenico/connect/sdk/domain/payout/payout_customer.rb +20 -27
- data/lib/ingenico/connect/sdk/domain/payout/payout_error_response.rb +12 -15
- data/lib/ingenico/connect/sdk/domain/payout/payout_references.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/payout/payout_result.rb +12 -15
- data/lib/ingenico/connect/sdk/domain/product/abstract_indicator.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/product/account_on_file.rb +15 -18
- data/lib/ingenico/connect/sdk/domain/product/account_on_file_attribute.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/product/account_on_file_display_hints.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/product/boleto_bancario_requiredness_validator.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/product/device_fingerprint_request.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/product/device_fingerprint_response.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/product/directory.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/product/directory_entry.rb +14 -15
- data/lib/ingenico/connect/sdk/domain/product/fixed_list_validator.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/product/get_customer_details_request.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/product/get_customer_details_response.rb +31 -30
- data/lib/ingenico/connect/sdk/domain/product/label_template_element.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/product/length_validator.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/product/payment_product.rb +71 -84
- data/lib/ingenico/connect/sdk/domain/product/payment_product302_specific_data.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/product/payment_product320_specific_data.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/product/payment_product863_specific_data.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/product/payment_product_display_hints.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/product/payment_product_field.rb +18 -21
- data/lib/ingenico/connect/sdk/domain/product/payment_product_field_data_restrictions.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/product/payment_product_field_display_element.rb +13 -12
- data/lib/ingenico/connect/sdk/domain/product/payment_product_field_display_hints.rb +33 -36
- data/lib/ingenico/connect/sdk/domain/product/payment_product_field_form_element.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/product/payment_product_field_tooltip.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/product/payment_product_field_validators.rb +41 -60
- data/lib/ingenico/connect/sdk/domain/product/payment_product_group.rb +19 -24
- data/lib/ingenico/connect/sdk/domain/product/payment_product_groups.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/product/payment_product_networks_response.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/product/payment_products.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/product/range_validator.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/product/regular_expression_validator.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/product/value_mapping_element.rb +12 -13
- data/lib/ingenico/connect/sdk/domain/refund/approve_refund_request.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/refund/bank_account_bban_refund.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/refund/bank_refund_method_specific_input.rb +12 -15
- data/lib/ingenico/connect/sdk/domain/refund/find_refunds_response.rb +14 -15
- data/lib/ingenico/connect/sdk/domain/refund/refund_customer.rb +16 -21
- data/lib/ingenico/connect/sdk/domain/refund/refund_error_response.rb +12 -15
- data/lib/ingenico/connect/sdk/domain/refund/refund_references.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/refund/refund_request.rb +20 -27
- data/lib/ingenico/connect/sdk/domain/refund/refund_result.rb +12 -15
- data/lib/ingenico/connect/sdk/domain/refund/refunds_response.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/riskassessments/contact_details_risk_assessment.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/riskassessments/customer_account_risk_assessment.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/riskassessments/customer_device_risk_assessment.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/riskassessments/customer_risk_assessment.rb +35 -46
- data/lib/ingenico/connect/sdk/domain/riskassessments/merchant_risk_assessment.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/riskassessments/order_risk_assessment.rb +17 -24
- data/lib/ingenico/connect/sdk/domain/riskassessments/personal_information_risk_assessment.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment.rb +16 -21
- data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment_bank_account.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment_card.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/riskassessments/risk_assessment_response.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/riskassessments/shipping_risk_assessment.rb +11 -12
- data/lib/ingenico/connect/sdk/domain/services/bank_data.rb +13 -12
- data/lib/ingenico/connect/sdk/domain/services/bank_details.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/services/bank_details_response.rb +17 -24
- data/lib/ingenico/connect/sdk/domain/services/convert_amount.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/services/get_iin_details_request.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/services/get_iin_details_response.rb +14 -15
- data/lib/ingenico/connect/sdk/domain/services/get_privacy_policy_response.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/services/iin_detail.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/services/payment_context.rb +11 -12
- data/lib/ingenico/connect/sdk/domain/services/swift.rb +31 -30
- data/lib/ingenico/connect/sdk/domain/services/test_connection.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/sessions/payment_product_filters_client_session.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/sessions/session_request.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/sessions/session_response.rb +20 -21
- data/lib/ingenico/connect/sdk/domain/token/abstract_token.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/token/create_token_request.rb +20 -27
- data/lib/ingenico/connect/sdk/domain/token/create_token_response.rb +7 -6
- data/lib/ingenico/connect/sdk/domain/token/creditor.rb +34 -33
- data/lib/ingenico/connect/sdk/domain/token/customer_token.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/token/customer_token_with_contact_details.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/token/debtor.rb +34 -33
- data/lib/ingenico/connect/sdk/domain/token/mandate_approval.rb +10 -9
- data/lib/ingenico/connect/sdk/domain/token/mandate_non_sepa_direct_debit.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit_with_mandate_id.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/token/mandate_sepa_direct_debit_without_creditor.rb +22 -27
- data/lib/ingenico/connect/sdk/domain/token/personal_information_token.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/token/token_card.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/token/token_card_data.rb +11 -12
- data/lib/ingenico/connect/sdk/domain/token/token_e_wallet.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/token/token_e_wallet_data.rb +4 -3
- data/lib/ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit_payment_product705_specific_data.rb +8 -9
- data/lib/ingenico/connect/sdk/domain/token/token_non_sepa_direct_debit_payment_product730_specific_data.rb +5 -6
- data/lib/ingenico/connect/sdk/domain/token/token_response.rb +23 -30
- data/lib/ingenico/connect/sdk/domain/token/token_sepa_direct_debit.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/token/token_sepa_direct_debit_without_creditor.rb +9 -12
- data/lib/ingenico/connect/sdk/domain/token/update_token_request.rb +20 -27
- data/lib/ingenico/connect/sdk/endpoint_configuration.rb +12 -20
- data/lib/ingenico/connect/sdk/factory.rb +34 -32
- data/lib/ingenico/connect/sdk/idempotence_exception.rb +3 -3
- data/lib/ingenico/connect/sdk/logging/communicator_logger.rb +5 -2
- data/lib/ingenico/connect/sdk/logging/log_message_builder.rb +25 -13
- data/lib/ingenico/connect/sdk/logging/logging_util.rb +14 -14
- data/lib/ingenico/connect/sdk/logging/request_log_message_builder.rb +4 -5
- data/lib/ingenico/connect/sdk/logging/response_log_message_builder.rb +7 -6
- data/lib/ingenico/connect/sdk/logging/ruby_communicator_logger.rb +5 -4
- data/lib/ingenico/connect/sdk/logging/stdout_communicator_logger.rb +2 -1
- data/lib/ingenico/connect/sdk/marshaller.rb +8 -3
- data/lib/ingenico/connect/sdk/merchant/captures/captures_client.rb +17 -17
- data/lib/ingenico/connect/sdk/merchant/disputes/disputes_client.rb +80 -47
- data/lib/ingenico/connect/sdk/merchant/disputes/upload_file_request.rb +27 -0
- data/lib/ingenico/connect/sdk/merchant/files/files_client.rb +55 -0
- data/lib/ingenico/connect/sdk/merchant/hostedcheckouts/hostedcheckouts_client.rb +31 -31
- data/lib/ingenico/connect/sdk/merchant/hostedmandatemanagements/hostedmandatemanagements_client.rb +31 -31
- data/lib/ingenico/connect/sdk/merchant/mandates/mandates_client.rb +92 -92
- data/lib/ingenico/connect/sdk/merchant/merchant_client.rb +37 -30
- data/lib/ingenico/connect/sdk/merchant/payments/find_payments_params.rb +12 -11
- data/lib/ingenico/connect/sdk/merchant/payments/payments_client.rb +248 -248
- data/lib/ingenico/connect/sdk/merchant/payouts/find_payouts_params.rb +10 -9
- data/lib/ingenico/connect/sdk/merchant/payouts/payouts_client.rb +90 -90
- data/lib/ingenico/connect/sdk/merchant/productgroups/find_productgroups_params.rb +17 -13
- data/lib/ingenico/connect/sdk/merchant/productgroups/get_productgroup_params.rb +17 -13
- data/lib/ingenico/connect/sdk/merchant/productgroups/productgroups_client.rb +48 -48
- data/lib/ingenico/connect/sdk/merchant/products/directory_params.rb +6 -5
- data/lib/ingenico/connect/sdk/merchant/products/find_products_params.rb +17 -13
- data/lib/ingenico/connect/sdk/merchant/products/get_product_params.rb +19 -15
- data/lib/ingenico/connect/sdk/merchant/products/networks_params.rb +10 -9
- data/lib/ingenico/connect/sdk/merchant/products/products_client.rb +96 -127
- data/lib/ingenico/connect/sdk/merchant/refunds/find_refunds_params.rb +12 -11
- data/lib/ingenico/connect/sdk/merchant/refunds/refunds_client.rb +74 -74
- data/lib/ingenico/connect/sdk/merchant/riskassessments/riskassessments_client.rb +30 -30
- data/lib/ingenico/connect/sdk/merchant/services/convert_amount_params.rb +8 -7
- data/lib/ingenico/connect/sdk/merchant/services/privacypolicy_params.rb +6 -5
- data/lib/ingenico/connect/sdk/merchant/services/services_client.rb +71 -71
- data/lib/ingenico/connect/sdk/merchant/sessions/sessions_client.rb +16 -16
- data/lib/ingenico/connect/sdk/merchant/tokens/delete_token_params.rb +4 -3
- data/lib/ingenico/connect/sdk/merchant/tokens/tokens_client.rb +76 -76
- data/lib/ingenico/connect/sdk/meta_data_provider.rb +19 -20
- data/lib/ingenico/connect/sdk/modules.rb +5 -4
- data/lib/ingenico/connect/sdk/multipart_form_data_object.rb +44 -0
- data/lib/ingenico/connect/sdk/multipart_form_data_request.rb +9 -0
- data/lib/ingenico/connect/sdk/not_found_exception.rb +4 -7
- data/lib/ingenico/connect/sdk/param_request.rb +3 -25
- data/lib/ingenico/connect/sdk/proxy_configuration.rb +16 -17
- data/lib/ingenico/connect/sdk/request_header.rb +22 -3
- data/lib/ingenico/connect/sdk/request_param.rb +3 -2
- data/lib/ingenico/connect/sdk/response_exception.rb +24 -27
- data/lib/ingenico/connect/sdk/response_header.rb +49 -2
- data/lib/ingenico/connect/sdk/session.rb +11 -10
- data/lib/ingenico/connect/sdk/uploadable_file.rb +30 -0
- data/lib/ingenico/connect/sdk/webhooks/api_version_mismatch_exception.rb +3 -3
- data/lib/ingenico/connect/sdk/webhooks/in_memory_secret_key_store.rb +5 -5
- data/lib/ingenico/connect/sdk/webhooks/secret_key_not_available_exception.rb +2 -0
- data/lib/ingenico/connect/sdk/webhooks/secret_key_store.rb +2 -2
- data/lib/ingenico/connect/sdk/webhooks/signature_validation_exception.rb +1 -1
- data/lib/ingenico/connect/sdk/webhooks/webhooks_event.rb +19 -25
- data/lib/ingenico/connect/sdk/webhooks/webhooks_helper.rb +11 -10
- data/spec/integration/multipart_form_data_spec.rb +214 -0
- data/spec/lib/defaultimpl/default_connection_idempotence_spec.rb +7 -7
- data/spec/lib/defaultimpl/default_connection_logger_spec.rb +0 -4
- data/spec/lib/defaultimpl/default_connection_spec.rb +48 -25
- data/spec/lib/logging/header_obfuscator_spec.rb +1 -1
- data/spec/lib/logging/logging_util_spec.rb +7 -7
- data/spec/lib/logging/obfuscator_spec.rb +4 -4
- data/spec/lib/logging/ruby_communicator_logger_spec.rb +8 -8
- data/spec/lib/logging/stdout_communicator_logger_spec.rb +1 -1
- data/spec/lib/logging/value_obfuscator_spec.rb +1 -1
- data/spec/lib/payments_client_spec.rb +8 -9
- metadata +12 -7
- data/lib/ingenico/connect/sdk/domain/publickey/public_key.rb +0 -38
- data/lib/ingenico/connect/sdk/response.rb +0 -59
- 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
|
17
|
-
# marshaller
|
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
|
-
|
22
|
-
|
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
|
28
|
+
# Performs a GET request to the Ingenico ePayments platform and returns the response as the given response type.
|
31
29
|
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
#
|
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
|
-
|
41
|
-
|
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
|
-
|
47
|
-
|
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
|
-
|
51
|
-
|
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
|
91
|
+
# Performs a DELETE request to the Ingenico ePayments platform and returns the response as the given response type.
|
55
92
|
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
61
|
-
#
|
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
|
-
|
65
|
-
|
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
|
-
|
75
|
-
|
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
|
121
|
+
# Performs a DELETE request to the Ingenico ePayments platform and yields the response as the headers and body.
|
79
122
|
#
|
80
|
-
#
|
81
|
-
#
|
82
|
-
#
|
83
|
-
#
|
84
|
-
#
|
85
|
-
#
|
86
|
-
|
87
|
-
|
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
|
-
|
90
|
-
|
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
|
-
|
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
|
-
|
99
|
-
|
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
|
-
|
184
|
+
body = @marshaller.marshal(request_body)
|
102
185
|
end
|
186
|
+
|
103
187
|
add_generic_headers('POST', uri, request_headers, context)
|
104
|
-
|
105
|
-
|
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
|
198
|
+
# Performs a POST request to the Ingenico ePayments platform and yields the response as the headers and body.
|
109
199
|
#
|
110
|
-
#
|
111
|
-
#
|
112
|
-
#
|
113
|
-
#
|
114
|
-
#
|
115
|
-
#
|
116
|
-
|
117
|
-
|
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
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
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
|
-
|
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
|
-
|
129
|
-
|
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
|
-
|
320
|
+
body = @marshaller.marshal(request_body)
|
132
321
|
end
|
133
322
|
add_generic_headers('PUT', uri, request_headers, context)
|
134
|
-
|
135
|
-
|
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
|
-
|
143
|
-
connection.
|
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
|
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
|
184
|
-
# The returned
|
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
|
187
|
-
# request_parameters::
|
188
|
-
#
|
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
|
-
|
192
|
-
|
193
|
-
|
194
|
-
unless api_endpoint.userinfo.nil? && api_endpoint.query.nil? &&
|
195
|
-
|
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
|
-
|
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(
|
236
|
-
update_context(
|
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(
|
239
|
-
@marshaller.unmarshal(
|
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(
|
243
|
-
idempotence_request_timestamp_value =
|
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(
|
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
|
255
|
-
|
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
|
464
|
+
raise CommunicationException, cause
|
262
465
|
end
|
263
466
|
else
|
264
|
-
raise ResponseException.new(
|
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(
|
272
|
-
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
|
-
|
477
|
+
content_type.downcase.start_with?('application/json')
|
275
478
|
end
|
276
479
|
end
|
277
480
|
end
|