onlinepayments-sdk-ruby 4.23.0 → 5.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 (408) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -0
  3. data/LICENSE.txt +0 -0
  4. data/README.md +5 -6
  5. data/Rakefile +0 -0
  6. data/lib/onlinepayments/sdk/api_exception.rb +47 -35
  7. data/lib/onlinepayments/sdk/api_resource.rb +49 -97
  8. data/lib/onlinepayments/sdk/authentication/authenticator.rb +19 -0
  9. data/lib/onlinepayments/sdk/authentication/authorization_type.rb +15 -0
  10. data/lib/onlinepayments/sdk/authentication/v1hmac_authenticator.rb +109 -0
  11. data/lib/onlinepayments/sdk/authentication.rb +1 -0
  12. data/lib/onlinepayments/sdk/authorization_exception.rb +14 -8
  13. data/lib/onlinepayments/sdk/call_context.rb +30 -21
  14. data/lib/onlinepayments/sdk/client.rb +36 -18
  15. data/lib/onlinepayments/sdk/communication/communication_exception.rb +19 -0
  16. data/lib/onlinepayments/sdk/communication/connection.rb +48 -0
  17. data/lib/onlinepayments/sdk/communication/default_connection.rb +427 -0
  18. data/lib/onlinepayments/sdk/communication/metadata_provider.rb +160 -0
  19. data/lib/onlinepayments/sdk/communication/multipart_form_data_object.rb +52 -0
  20. data/lib/onlinepayments/sdk/communication/multipart_form_data_request.rb +13 -0
  21. data/lib/onlinepayments/sdk/communication/not_found_exception.rb +19 -0
  22. data/lib/onlinepayments/sdk/communication/param_request.rb +14 -0
  23. data/lib/onlinepayments/sdk/communication/pooled_connection.rb +26 -0
  24. data/lib/onlinepayments/sdk/communication/request_header.rb +62 -0
  25. data/lib/onlinepayments/sdk/communication/request_param.rb +28 -0
  26. data/lib/onlinepayments/sdk/communication/response_exception.rb +56 -0
  27. data/lib/onlinepayments/sdk/communication/response_header.rb +78 -0
  28. data/lib/onlinepayments/sdk/communication.rb +1 -0
  29. data/lib/onlinepayments/sdk/communicator.rb +475 -268
  30. data/lib/onlinepayments/sdk/communicator_configuration.rb +162 -53
  31. data/lib/onlinepayments/sdk/declined_payment_exception.rb +28 -21
  32. data/lib/onlinepayments/sdk/declined_payout_exception.rb +28 -23
  33. data/lib/onlinepayments/sdk/declined_refund_exception.rb +28 -23
  34. data/lib/onlinepayments/sdk/declined_transaction_exception.rb +16 -10
  35. data/lib/onlinepayments/sdk/domain/account_on_file.rb +44 -35
  36. data/lib/onlinepayments/sdk/domain/account_on_file_attribute.rb +42 -28
  37. data/lib/onlinepayments/sdk/domain/account_on_file_display_hints.rb +29 -24
  38. data/lib/onlinepayments/sdk/domain/acquirer_information.rb +27 -22
  39. data/lib/onlinepayments/sdk/domain/acquirer_selection_information.rb +34 -24
  40. data/lib/onlinepayments/sdk/domain/additional_order_input.rb +43 -38
  41. data/lib/onlinepayments/sdk/domain/address.rb +65 -43
  42. data/lib/onlinepayments/sdk/domain/address_personal.rb +78 -52
  43. data/lib/onlinepayments/sdk/domain/airline_data.rb +204 -123
  44. data/lib/onlinepayments/sdk/domain/airline_flight_leg.rb +158 -95
  45. data/lib/onlinepayments/sdk/domain/airline_passenger.rb +59 -39
  46. data/lib/onlinepayments/sdk/domain/amount_breakdown.rb +27 -20
  47. data/lib/onlinepayments/sdk/domain/amount_of_money.rb +27 -20
  48. data/lib/onlinepayments/sdk/domain/api_error.rb +73 -47
  49. data/lib/onlinepayments/sdk/domain/apple_pay_line_item.rb +72 -0
  50. data/lib/onlinepayments/sdk/domain/apple_pay_recurring_payment_request.rb +61 -0
  51. data/lib/onlinepayments/sdk/domain/bank_account_iban.rb +20 -16
  52. data/lib/onlinepayments/sdk/domain/browser_data.rb +51 -35
  53. data/lib/onlinepayments/sdk/domain/calculate_surcharge_request.rb +27 -24
  54. data/lib/onlinepayments/sdk/domain/calculate_surcharge_response.rb +22 -20
  55. data/lib/onlinepayments/sdk/domain/cancel_payment_request.rb +27 -22
  56. data/lib/onlinepayments/sdk/domain/cancel_payment_response.rb +20 -18
  57. data/lib/onlinepayments/sdk/domain/capture.rb +41 -32
  58. data/lib/onlinepayments/sdk/domain/capture_output.rb +106 -78
  59. data/lib/onlinepayments/sdk/domain/capture_payment_request.rb +43 -26
  60. data/lib/onlinepayments/sdk/domain/capture_response.rb +41 -32
  61. data/lib/onlinepayments/sdk/domain/capture_status_output.rb +20 -16
  62. data/lib/onlinepayments/sdk/domain/captures_response.rb +22 -20
  63. data/lib/onlinepayments/sdk/domain/card.rb +41 -28
  64. data/lib/onlinepayments/sdk/domain/card_essentials.rb +41 -28
  65. data/lib/onlinepayments/sdk/domain/card_fraud_results.rb +34 -24
  66. data/lib/onlinepayments/sdk/domain/card_info.rb +27 -20
  67. data/lib/onlinepayments/sdk/domain/card_payment_method_specific_input.rb +199 -128
  68. data/lib/onlinepayments/sdk/domain/card_payment_method_specific_input_base.rb +149 -104
  69. data/lib/onlinepayments/sdk/domain/card_payment_method_specific_input_for_hosted_checkout.rb +36 -28
  70. data/lib/onlinepayments/sdk/domain/card_payment_method_specific_output.rb +133 -100
  71. data/lib/onlinepayments/sdk/domain/card_payout_method_specific_input.rb +41 -30
  72. data/lib/onlinepayments/sdk/domain/card_recurrence_details.rb +20 -16
  73. data/lib/onlinepayments/sdk/domain/card_source.rb +41 -30
  74. data/lib/onlinepayments/sdk/domain/card_without_cvv.rb +34 -24
  75. data/lib/onlinepayments/sdk/domain/company_information.rb +20 -16
  76. data/lib/onlinepayments/sdk/domain/complete_payment_card_payment_method_specific_input.rb +20 -18
  77. data/lib/onlinepayments/sdk/domain/complete_payment_request.rb +27 -24
  78. data/lib/onlinepayments/sdk/domain/complete_payment_response.rb +35 -31
  79. data/lib/onlinepayments/sdk/domain/contact_details.rb +51 -35
  80. data/lib/onlinepayments/sdk/domain/create_hosted_checkout_request.rb +76 -59
  81. data/lib/onlinepayments/sdk/domain/create_hosted_checkout_response.rb +60 -43
  82. data/lib/onlinepayments/sdk/domain/create_hosted_tokenization_request.rb +57 -42
  83. data/lib/onlinepayments/sdk/domain/create_hosted_tokenization_response.rb +57 -44
  84. data/lib/onlinepayments/sdk/domain/create_mandate_request.rb +71 -48
  85. data/lib/onlinepayments/sdk/domain/create_mandate_response.rb +27 -24
  86. data/lib/onlinepayments/sdk/domain/create_mandate_with_return_url.rb +71 -48
  87. data/lib/onlinepayments/sdk/domain/create_payment_link_request.rb +120 -87
  88. data/lib/onlinepayments/sdk/domain/create_payment_request.rb +82 -60
  89. data/lib/onlinepayments/sdk/domain/create_payment_response.rb +35 -31
  90. data/lib/onlinepayments/sdk/domain/create_payout_request.rb +61 -40
  91. data/lib/onlinepayments/sdk/domain/create_token_request.rb +27 -22
  92. data/lib/onlinepayments/sdk/domain/created_payment_output.rb +27 -22
  93. data/lib/onlinepayments/sdk/domain/created_token_response.rb +50 -38
  94. data/lib/onlinepayments/sdk/domain/credit_card_specific_input_hosted_tokenization.rb +29 -26
  95. data/lib/onlinepayments/sdk/domain/credit_card_validation_rules_hosted_tokenization.rb +27 -20
  96. data/lib/onlinepayments/sdk/domain/currency_conversion.rb +27 -22
  97. data/lib/onlinepayments/sdk/domain/currency_conversion_input.rb +27 -20
  98. data/lib/onlinepayments/sdk/domain/currency_conversion_request.rb +27 -24
  99. data/lib/onlinepayments/sdk/domain/currency_conversion_response.rb +34 -28
  100. data/lib/onlinepayments/sdk/domain/currency_conversion_result.rb +27 -20
  101. data/lib/onlinepayments/sdk/domain/currency_conversion_specific_input.rb +20 -16
  102. data/lib/onlinepayments/sdk/domain/customer.rb +87 -68
  103. data/lib/onlinepayments/sdk/domain/customer_account.rb +77 -55
  104. data/lib/onlinepayments/sdk/domain/customer_account_authentication.rb +34 -20
  105. data/lib/onlinepayments/sdk/domain/customer_bank_account.rb +34 -24
  106. data/lib/onlinepayments/sdk/domain/customer_device.rb +64 -44
  107. data/lib/onlinepayments/sdk/domain/customer_device_output.rb +20 -16
  108. data/lib/onlinepayments/sdk/domain/customer_output.rb +20 -18
  109. data/lib/onlinepayments/sdk/domain/customer_payment_activity.rb +34 -24
  110. data/lib/onlinepayments/sdk/domain/customer_token.rb +35 -31
  111. data/lib/onlinepayments/sdk/domain/data_object.rb +32 -0
  112. data/lib/onlinepayments/sdk/domain/dcc_card_source.rb +41 -30
  113. data/lib/onlinepayments/sdk/domain/dcc_proposal.rb +51 -41
  114. data/lib/onlinepayments/sdk/domain/decrypted_payment_data.rb +51 -35
  115. data/lib/onlinepayments/sdk/domain/directory_entry.rb +34 -24
  116. data/lib/onlinepayments/sdk/domain/discount.rb +20 -16
  117. data/lib/onlinepayments/sdk/domain/empty_validator.rb +7 -6
  118. data/lib/onlinepayments/sdk/domain/error_response.rb +29 -24
  119. data/lib/onlinepayments/sdk/domain/external_cardholder_authentication_data.rb +86 -55
  120. data/lib/onlinepayments/sdk/domain/external_token_linked.rb +35 -24
  121. data/lib/onlinepayments/sdk/domain/feedbacks.rb +30 -0
  122. data/lib/onlinepayments/sdk/domain/fixed_list_validator.rb +22 -20
  123. data/lib/onlinepayments/sdk/domain/fraud_fields.rb +37 -28
  124. data/lib/onlinepayments/sdk/domain/fraud_results.rb +20 -16
  125. data/lib/onlinepayments/sdk/domain/g_pay_three_d_secure.rb +50 -36
  126. data/lib/onlinepayments/sdk/domain/get_hosted_checkout_response.rb +27 -22
  127. data/lib/onlinepayments/sdk/domain/get_hosted_tokenization_response.rb +27 -22
  128. data/lib/onlinepayments/sdk/domain/get_iin_details_request.rb +27 -22
  129. data/lib/onlinepayments/sdk/domain/get_iin_details_response.rb +52 -38
  130. data/lib/onlinepayments/sdk/domain/get_mandate_response.rb +20 -18
  131. data/lib/onlinepayments/sdk/domain/get_payment_product_groups_response.rb +22 -20
  132. data/lib/onlinepayments/sdk/domain/get_payment_products_response.rb +22 -20
  133. data/lib/onlinepayments/sdk/domain/get_privacy_policy_response.rb +20 -16
  134. data/lib/onlinepayments/sdk/domain/gift_card_purchase.rb +27 -22
  135. data/lib/onlinepayments/sdk/domain/hosted_checkout_specific_input.rb +83 -56
  136. data/lib/onlinepayments/sdk/domain/hosted_checkout_specific_output.rb +27 -20
  137. data/lib/onlinepayments/sdk/domain/iin_detail.rb +34 -24
  138. data/lib/onlinepayments/sdk/domain/label_template_element.rb +27 -20
  139. data/lib/onlinepayments/sdk/domain/length_validator.rb +27 -20
  140. data/lib/onlinepayments/sdk/domain/line_item.rb +44 -31
  141. data/lib/onlinepayments/sdk/domain/line_item_invoice_data.rb +20 -16
  142. data/lib/onlinepayments/sdk/domain/loan_recipient.rb +51 -35
  143. data/lib/onlinepayments/sdk/domain/lodging_data.rb +20 -16
  144. data/lib/onlinepayments/sdk/domain/mandate_address.rb +51 -35
  145. data/lib/onlinepayments/sdk/domain/mandate_address_response.rb +51 -35
  146. data/lib/onlinepayments/sdk/domain/mandate_contact_details.rb +20 -16
  147. data/lib/onlinepayments/sdk/domain/mandate_customer.rb +52 -44
  148. data/lib/onlinepayments/sdk/domain/mandate_customer_response.rb +52 -44
  149. data/lib/onlinepayments/sdk/domain/mandate_merchant_action.rb +27 -22
  150. data/lib/onlinepayments/sdk/domain/mandate_personal_information.rb +27 -22
  151. data/lib/onlinepayments/sdk/domain/mandate_personal_information_response.rb +27 -22
  152. data/lib/onlinepayments/sdk/domain/mandate_personal_name.rb +27 -20
  153. data/lib/onlinepayments/sdk/domain/mandate_personal_name_response.rb +27 -20
  154. data/lib/onlinepayments/sdk/domain/mandate_redirect_data.rb +27 -20
  155. data/lib/onlinepayments/sdk/domain/mandate_response.rb +64 -44
  156. data/lib/onlinepayments/sdk/domain/merchant_action.rb +43 -28
  157. data/lib/onlinepayments/sdk/domain/mobile_payment_data.rb +27 -20
  158. data/lib/onlinepayments/sdk/domain/mobile_payment_method_hosted_checkout_specific_input.rb +43 -26
  159. data/lib/onlinepayments/sdk/domain/mobile_payment_method_specific_input.rb +71 -50
  160. data/lib/onlinepayments/sdk/domain/mobile_payment_method_specific_output.rb +58 -45
  161. data/lib/onlinepayments/sdk/domain/mobile_payment_product302_specific_input.rb +32 -0
  162. data/lib/onlinepayments/sdk/domain/mobile_payment_product320_specific_input.rb +20 -18
  163. data/lib/onlinepayments/sdk/domain/mobile_three_d_secure_challenge_parameters.rb +51 -0
  164. data/lib/onlinepayments/sdk/domain/multiple_payment_information.rb +27 -20
  165. data/lib/onlinepayments/sdk/domain/omnichannel_payout_specific_input.rb +20 -16
  166. data/lib/onlinepayments/sdk/domain/operation_output.rb +67 -45
  167. data/lib/onlinepayments/sdk/domain/operation_payment_references.rb +30 -0
  168. data/lib/onlinepayments/sdk/domain/order.rb +75 -66
  169. data/lib/onlinepayments/sdk/domain/order_line_details.rb +79 -47
  170. data/lib/onlinepayments/sdk/domain/order_references.rb +34 -24
  171. data/lib/onlinepayments/sdk/domain/order_status_output.rb +52 -38
  172. data/lib/onlinepayments/sdk/domain/order_type_information.rb +27 -20
  173. data/lib/onlinepayments/sdk/domain/other_details.rb +37 -0
  174. data/lib/onlinepayments/sdk/domain/payment_account_on_file.rb +27 -20
  175. data/lib/onlinepayments/sdk/domain/payment_context.rb +34 -26
  176. data/lib/onlinepayments/sdk/domain/payment_creation_output.rb +41 -28
  177. data/lib/onlinepayments/sdk/domain/payment_details_response.rb +60 -49
  178. data/lib/onlinepayments/sdk/domain/payment_error_response.rb +37 -31
  179. data/lib/onlinepayments/sdk/domain/payment_link_event.rb +34 -24
  180. data/lib/onlinepayments/sdk/domain/payment_link_order_input.rb +34 -28
  181. data/lib/onlinepayments/sdk/domain/payment_link_order_output.rb +34 -28
  182. data/lib/onlinepayments/sdk/domain/payment_link_response.rb +74 -51
  183. data/lib/onlinepayments/sdk/domain/payment_link_specific_input.rb +36 -24
  184. data/lib/onlinepayments/sdk/domain/payment_output.rb +115 -94
  185. data/lib/onlinepayments/sdk/domain/payment_product.rb +117 -85
  186. data/lib/onlinepayments/sdk/domain/payment_product130_specific_input.rb +20 -18
  187. data/lib/onlinepayments/sdk/domain/payment_product130_specific_three_d_secure.rb +41 -28
  188. data/lib/onlinepayments/sdk/domain/payment_product3012.rb +27 -20
  189. data/lib/onlinepayments/sdk/domain/payment_product3012_specific_input.rb +51 -0
  190. data/lib/onlinepayments/sdk/domain/payment_product302_specific_data.rb +22 -20
  191. data/lib/onlinepayments/sdk/domain/payment_product3203_specific_output.rb +27 -24
  192. data/lib/onlinepayments/sdk/domain/payment_product3208_specific_input.rb +20 -16
  193. data/lib/onlinepayments/sdk/domain/payment_product3208_specific_output.rb +20 -16
  194. data/lib/onlinepayments/sdk/domain/payment_product3209_specific_input.rb +20 -16
  195. data/lib/onlinepayments/sdk/domain/payment_product3209_specific_output.rb +20 -16
  196. data/lib/onlinepayments/sdk/domain/payment_product320_specific_data.rb +29 -24
  197. data/lib/onlinepayments/sdk/domain/payment_product5001_specific_output.rb +48 -16
  198. data/lib/onlinepayments/sdk/domain/payment_product5100_specific_input.rb +20 -16
  199. data/lib/onlinepayments/sdk/domain/payment_product5402_specific_output.rb +20 -16
  200. data/lib/onlinepayments/sdk/domain/payment_product5404.rb +27 -20
  201. data/lib/onlinepayments/sdk/domain/payment_product5407.rb +27 -20
  202. data/lib/onlinepayments/sdk/domain/payment_product5500_specific_output.rb +41 -24
  203. data/lib/onlinepayments/sdk/domain/payment_product771_specific_output.rb +20 -16
  204. data/lib/onlinepayments/sdk/domain/payment_product840_customer_account.rb +72 -47
  205. data/lib/onlinepayments/sdk/domain/payment_product840_specific_output.rb +43 -38
  206. data/lib/onlinepayments/sdk/domain/payment_product_display_hints.rb +34 -24
  207. data/lib/onlinepayments/sdk/domain/payment_product_field.rb +41 -32
  208. data/lib/onlinepayments/sdk/domain/payment_product_field_data_restrictions.rb +27 -22
  209. data/lib/onlinepayments/sdk/domain/payment_product_field_display_element.rb +41 -28
  210. data/lib/onlinepayments/sdk/domain/payment_product_field_display_hints.rb +84 -56
  211. data/lib/onlinepayments/sdk/domain/payment_product_field_form_element.rb +30 -24
  212. data/lib/onlinepayments/sdk/domain/payment_product_field_tooltip.rb +28 -20
  213. data/lib/onlinepayments/sdk/domain/payment_product_field_validators.rb +83 -73
  214. data/lib/onlinepayments/sdk/domain/payment_product_filter.rb +32 -29
  215. data/lib/onlinepayments/sdk/domain/payment_product_filter_hosted_tokenization.rb +22 -20
  216. data/lib/onlinepayments/sdk/domain/payment_product_filters_hosted_checkout.rb +27 -24
  217. data/lib/onlinepayments/sdk/domain/payment_product_filters_hosted_tokenization.rb +27 -24
  218. data/lib/onlinepayments/sdk/domain/payment_product_group.rb +44 -37
  219. data/lib/onlinepayments/sdk/domain/payment_product_networks_response.rb +22 -20
  220. data/lib/onlinepayments/sdk/domain/payment_references.rb +27 -20
  221. data/lib/onlinepayments/sdk/domain/payment_response.rb +51 -41
  222. data/lib/onlinepayments/sdk/domain/payment_status_output.rb +66 -46
  223. data/lib/onlinepayments/sdk/domain/payout_error_response.rb +37 -31
  224. data/lib/onlinepayments/sdk/domain/payout_output.rb +27 -22
  225. data/lib/onlinepayments/sdk/domain/payout_response.rb +41 -32
  226. data/lib/onlinepayments/sdk/domain/payout_result.rb +41 -32
  227. data/lib/onlinepayments/sdk/domain/payout_status_output.rb +34 -24
  228. data/lib/onlinepayments/sdk/domain/personal_information.rb +34 -26
  229. data/lib/onlinepayments/sdk/domain/personal_information_token.rb +20 -18
  230. data/lib/onlinepayments/sdk/domain/personal_name.rb +34 -24
  231. data/lib/onlinepayments/sdk/domain/personal_name_token.rb +27 -20
  232. data/lib/onlinepayments/sdk/domain/product_directory.rb +22 -20
  233. data/lib/onlinepayments/sdk/domain/protection_eligibility.rb +27 -20
  234. data/lib/onlinepayments/sdk/domain/range_validator.rb +27 -20
  235. data/lib/onlinepayments/sdk/domain/rate_details.rb +51 -35
  236. data/lib/onlinepayments/sdk/domain/redirect_data.rb +27 -20
  237. data/lib/onlinepayments/sdk/domain/redirect_payment_method_specific_input.rb +139 -88
  238. data/lib/onlinepayments/sdk/domain/redirect_payment_method_specific_output.rb +95 -75
  239. data/lib/onlinepayments/sdk/domain/redirect_payment_product3203_specific_input.rb +20 -16
  240. data/lib/onlinepayments/sdk/domain/redirect_payment_product3302_specific_input.rb +44 -0
  241. data/lib/onlinepayments/sdk/domain/redirect_payment_product3306_specific_input.rb +20 -16
  242. data/lib/onlinepayments/sdk/domain/redirect_payment_product5001_specific_input.rb +20 -16
  243. data/lib/onlinepayments/sdk/domain/redirect_payment_product5300_specific_input.rb +74 -0
  244. data/lib/onlinepayments/sdk/domain/redirect_payment_product5406_specific_input.rb +20 -18
  245. data/lib/onlinepayments/sdk/domain/redirect_payment_product5408_specific_input.rb +27 -22
  246. data/lib/onlinepayments/sdk/domain/redirect_payment_product5410_specific_input.rb +32 -0
  247. data/lib/onlinepayments/sdk/domain/redirect_payment_product809_specific_input.rb +20 -16
  248. data/lib/onlinepayments/sdk/domain/redirect_payment_product840_specific_input.rb +41 -20
  249. data/lib/onlinepayments/sdk/domain/redirection_data.rb +20 -16
  250. data/lib/onlinepayments/sdk/domain/refund_card_method_specific_output.rb +34 -26
  251. data/lib/onlinepayments/sdk/domain/refund_e_wallet_method_specific_output.rb +34 -26
  252. data/lib/onlinepayments/sdk/domain/refund_error_response.rb +37 -31
  253. data/lib/onlinepayments/sdk/domain/refund_mobile_method_specific_output.rb +34 -24
  254. data/lib/onlinepayments/sdk/domain/refund_output.rb +89 -64
  255. data/lib/onlinepayments/sdk/domain/refund_payment_product840_customer_account.rb +34 -24
  256. data/lib/onlinepayments/sdk/domain/refund_payment_product840_specific_output.rb +20 -18
  257. data/lib/onlinepayments/sdk/domain/refund_redirect_method_specific_output.rb +27 -20
  258. data/lib/onlinepayments/sdk/domain/refund_request.rb +43 -24
  259. data/lib/onlinepayments/sdk/domain/refund_response.rb +41 -32
  260. data/lib/onlinepayments/sdk/domain/refunds_response.rb +22 -20
  261. data/lib/onlinepayments/sdk/domain/regular_expression_validator.rb +20 -16
  262. data/lib/onlinepayments/sdk/domain/send_test_request.rb +30 -0
  263. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_input.rb +27 -22
  264. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_input_base.rb +27 -22
  265. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_method_specific_output.rb +34 -28
  266. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_product771_specific_input.rb +27 -22
  267. data/lib/onlinepayments/sdk/domain/sepa_direct_debit_payment_product771_specific_input_base.rb +27 -22
  268. data/lib/onlinepayments/sdk/domain/session_request.rb +22 -20
  269. data/lib/onlinepayments/sdk/domain/session_response.rb +53 -39
  270. data/lib/onlinepayments/sdk/domain/shipping.rb +76 -52
  271. data/lib/onlinepayments/sdk/domain/shipping_method.rb +41 -28
  272. data/lib/onlinepayments/sdk/domain/shopping_cart.rb +62 -48
  273. data/lib/onlinepayments/sdk/domain/shopping_cart_extension.rb +51 -43
  274. data/lib/onlinepayments/sdk/domain/show_form_data.rb +35 -31
  275. data/lib/onlinepayments/sdk/domain/subsequent_card_payment_method_specific_input.rb +60 -39
  276. data/lib/onlinepayments/sdk/domain/subsequent_payment_product5001_specific_input.rb +20 -16
  277. data/lib/onlinepayments/sdk/domain/subsequent_payment_request.rb +35 -31
  278. data/lib/onlinepayments/sdk/domain/subsequent_payment_response.rb +20 -18
  279. data/lib/onlinepayments/sdk/domain/surcharge.rb +59 -48
  280. data/lib/onlinepayments/sdk/domain/surcharge_calculation_card.rb +27 -20
  281. data/lib/onlinepayments/sdk/domain/surcharge_for_payment_link.rb +20 -16
  282. data/lib/onlinepayments/sdk/domain/surcharge_rate.rb +41 -28
  283. data/lib/onlinepayments/sdk/domain/surcharge_specific_input.rb +27 -22
  284. data/lib/onlinepayments/sdk/domain/surcharge_specific_output.rb +34 -28
  285. data/lib/onlinepayments/sdk/domain/test_connection.rb +20 -16
  286. data/lib/onlinepayments/sdk/domain/three_d_secure.rb +98 -63
  287. data/lib/onlinepayments/sdk/domain/three_d_secure_base.rb +78 -52
  288. data/lib/onlinepayments/sdk/domain/three_d_secure_data.rb +34 -24
  289. data/lib/onlinepayments/sdk/domain/three_d_secure_results.rb +107 -67
  290. data/lib/onlinepayments/sdk/domain/token_card.rb +27 -22
  291. data/lib/onlinepayments/sdk/domain/token_card_data.rb +27 -18
  292. data/lib/onlinepayments/sdk/domain/token_card_specific_input.rb +20 -18
  293. data/lib/onlinepayments/sdk/domain/token_data.rb +27 -18
  294. data/lib/onlinepayments/sdk/domain/token_e_wallet.rb +28 -22
  295. data/lib/onlinepayments/sdk/domain/token_response.rb +58 -45
  296. data/lib/onlinepayments/sdk/domain/transaction.rb +20 -18
  297. data/lib/onlinepayments/sdk/domain/uploadable_file.rb +33 -0
  298. data/lib/onlinepayments/sdk/domain/validate_credentials_request.rb +37 -0
  299. data/lib/onlinepayments/sdk/domain/validate_credentials_response.rb +30 -0
  300. data/lib/onlinepayments/sdk/domain/value_mapping_element.rb +29 -24
  301. data/lib/onlinepayments/sdk/domain.rb +4 -0
  302. data/lib/onlinepayments/sdk/exception_factory.rb +76 -0
  303. data/lib/onlinepayments/sdk/factory.rb +163 -118
  304. data/lib/onlinepayments/sdk/idempotence_exception.rb +23 -19
  305. data/lib/onlinepayments/sdk/json/default_marshaller.rb +34 -0
  306. data/lib/onlinepayments/sdk/json/marshaller.rb +27 -0
  307. data/lib/onlinepayments/sdk/json/marshaller_syntax_exception.rb +9 -0
  308. data/lib/onlinepayments/sdk/json.rb +1 -0
  309. data/lib/onlinepayments/sdk/logging/communicator_logger.rb +18 -16
  310. data/lib/onlinepayments/sdk/logging/log_message_builder.rb +80 -47
  311. data/lib/onlinepayments/sdk/logging/logging_capable.rb +1 -1
  312. data/lib/onlinepayments/sdk/logging/obfuscation/body_obfuscator.rb +113 -0
  313. data/lib/onlinepayments/sdk/logging/obfuscation/header_obfuscator.rb +54 -0
  314. data/lib/onlinepayments/sdk/logging/obfuscation/obfuscation_capable.rb +21 -0
  315. data/lib/onlinepayments/sdk/logging/obfuscation/obfuscation_rule.rb +47 -0
  316. data/lib/onlinepayments/sdk/logging/obfuscation.rb +1 -0
  317. data/lib/onlinepayments/sdk/logging/request_log_message_builder.rb +40 -29
  318. data/lib/onlinepayments/sdk/logging/response_log_message_builder.rb +30 -23
  319. data/lib/onlinepayments/sdk/logging/ruby_communicator_logger.rb +49 -45
  320. data/lib/onlinepayments/sdk/logging/stdout_communicator_logger.rb +20 -23
  321. data/lib/onlinepayments/sdk/logging.rb +1 -10
  322. data/lib/onlinepayments/sdk/merchant/captures/captures_client.rb +57 -0
  323. data/lib/onlinepayments/sdk/merchant/captures.rb +4 -0
  324. data/lib/onlinepayments/sdk/merchant/complete/complete_client.rb +60 -0
  325. data/lib/onlinepayments/sdk/merchant/complete.rb +4 -0
  326. data/lib/onlinepayments/sdk/merchant/hostedcheckout/hosted_checkout_client.rb +72 -71
  327. data/lib/onlinepayments/sdk/merchant/hostedcheckout.rb +4 -0
  328. data/lib/onlinepayments/sdk/merchant/hostedtokenization/hosted_tokenization_client.rb +72 -71
  329. data/lib/onlinepayments/sdk/merchant/hostedtokenization.rb +4 -0
  330. data/lib/onlinepayments/sdk/merchant/mandates/mandates_client.rb +165 -164
  331. data/lib/onlinepayments/sdk/merchant/mandates.rb +4 -0
  332. data/lib/onlinepayments/sdk/merchant/merchant_client.rb +116 -64
  333. data/lib/onlinepayments/sdk/merchant/paymentlinks/payment_links_client.rb +102 -101
  334. data/lib/onlinepayments/sdk/merchant/paymentlinks.rb +4 -0
  335. data/lib/onlinepayments/sdk/merchant/payments/payments_client.rb +233 -332
  336. data/lib/onlinepayments/sdk/merchant/payments.rb +4 -0
  337. data/lib/onlinepayments/sdk/merchant/payouts/payouts_client.rb +73 -71
  338. data/lib/onlinepayments/sdk/merchant/payouts.rb +4 -0
  339. data/lib/onlinepayments/sdk/merchant/privacypolicy/get_privacy_policy_params.rb +32 -0
  340. data/lib/onlinepayments/sdk/merchant/privacypolicy/privacy_policy_client.rb +54 -0
  341. data/lib/onlinepayments/sdk/merchant/privacypolicy.rb +4 -0
  342. data/lib/onlinepayments/sdk/merchant/productgroups/get_product_group_params.rb +50 -47
  343. data/lib/onlinepayments/sdk/merchant/productgroups/get_product_groups_params.rb +50 -47
  344. data/lib/onlinepayments/sdk/merchant/productgroups/product_groups_client.rb +72 -72
  345. data/lib/onlinepayments/sdk/merchant/productgroups.rb +4 -0
  346. data/lib/onlinepayments/sdk/merchant/products/get_payment_product_networks_params.rb +27 -25
  347. data/lib/onlinepayments/sdk/merchant/products/get_payment_product_params.rb +50 -47
  348. data/lib/onlinepayments/sdk/merchant/products/get_payment_products_params.rb +50 -47
  349. data/lib/onlinepayments/sdk/merchant/products/get_product_directory_params.rb +21 -19
  350. data/lib/onlinepayments/sdk/merchant/products/products_client.rb +134 -136
  351. data/lib/onlinepayments/sdk/merchant/products.rb +4 -0
  352. data/lib/onlinepayments/sdk/merchant/refunds/refunds_client.rb +57 -0
  353. data/lib/onlinepayments/sdk/merchant/refunds.rb +4 -0
  354. data/lib/onlinepayments/sdk/merchant/services/services_client.rb +124 -155
  355. data/lib/onlinepayments/sdk/merchant/services.rb +4 -0
  356. data/lib/onlinepayments/sdk/merchant/sessions/sessions_client.rb +42 -41
  357. data/lib/onlinepayments/sdk/merchant/sessions.rb +4 -0
  358. data/lib/onlinepayments/sdk/merchant/tokens/tokens_client.rb +101 -100
  359. data/lib/onlinepayments/sdk/merchant/tokens.rb +4 -0
  360. data/lib/onlinepayments/sdk/merchant/webhooks/webhooks_client.rb +83 -0
  361. data/lib/onlinepayments/sdk/merchant/webhooks.rb +4 -0
  362. data/lib/onlinepayments/sdk/merchant.rb +4 -0
  363. data/lib/onlinepayments/sdk/platform_exception.rb +19 -0
  364. data/lib/onlinepayments/sdk/proxy_configuration.rb +60 -60
  365. data/lib/onlinepayments/sdk/reference_exception.rb +14 -9
  366. data/lib/onlinepayments/sdk/validation_exception.rb +14 -9
  367. data/lib/onlinepayments/sdk/webhooks/api_version_mismatch_exception.rb +17 -15
  368. data/lib/onlinepayments/sdk/webhooks/in_memory_secret_key_store.rb +46 -43
  369. data/lib/onlinepayments/sdk/webhooks/secret_key_not_available_exception.rb +16 -12
  370. data/lib/onlinepayments/sdk/webhooks/secret_key_store.rb +13 -11
  371. data/lib/onlinepayments/sdk/webhooks/signature_validation_exception.rb +15 -14
  372. data/lib/onlinepayments/sdk/webhooks/signature_validator.rb +81 -0
  373. data/lib/onlinepayments/sdk/webhooks/webhooks_event.rb +84 -53
  374. data/lib/onlinepayments/sdk/webhooks/webhooks_helper.rb +28 -90
  375. data/lib/onlinepayments/sdk/webhooks.rb +1 -11
  376. data/lib/onlinepayments/sdk.rb +4 -26
  377. data/onlinepayments-sdk-ruby.gemspec +3 -2
  378. metadata +89 -35
  379. data/lib/onlinepayments/sdk/authenticator.rb +0 -16
  380. data/lib/onlinepayments/sdk/communication_exception.rb +0 -16
  381. data/lib/onlinepayments/sdk/connection.rb +0 -41
  382. data/lib/onlinepayments/sdk/data_object.rb +0 -31
  383. data/lib/onlinepayments/sdk/defaultimpl/authorization_type.rb +0 -24
  384. data/lib/onlinepayments/sdk/defaultimpl/default_authenticator.rb +0 -108
  385. data/lib/onlinepayments/sdk/defaultimpl/default_connection.rb +0 -365
  386. data/lib/onlinepayments/sdk/defaultimpl/default_marshaller.rb +0 -32
  387. data/lib/onlinepayments/sdk/defaultimpl.rb +0 -6
  388. data/lib/onlinepayments/sdk/endpoint_configuration.rb +0 -127
  389. data/lib/onlinepayments/sdk/exceptions.rb +0 -8
  390. data/lib/onlinepayments/sdk/logging/logging_util.rb +0 -286
  391. data/lib/onlinepayments/sdk/marshaller.rb +0 -24
  392. data/lib/onlinepayments/sdk/marshaller_syntax_exception.rb +0 -6
  393. data/lib/onlinepayments/sdk/merchant/services/get_privacy_policy_params.rb +0 -30
  394. data/lib/onlinepayments/sdk/meta_data_provider.rb +0 -150
  395. data/lib/onlinepayments/sdk/modules.rb +0 -62
  396. data/lib/onlinepayments/sdk/multipart_form_data_object.rb +0 -44
  397. data/lib/onlinepayments/sdk/multipart_form_data_request.rb +0 -9
  398. data/lib/onlinepayments/sdk/not_found_exception.rb +0 -16
  399. data/lib/onlinepayments/sdk/param_request.rb +0 -11
  400. data/lib/onlinepayments/sdk/payment_platform_exception.rb +0 -15
  401. data/lib/onlinepayments/sdk/pooled_connection.rb +0 -21
  402. data/lib/onlinepayments/sdk/request_header.rb +0 -50
  403. data/lib/onlinepayments/sdk/request_param.rb +0 -23
  404. data/lib/onlinepayments/sdk/response_exception.rb +0 -47
  405. data/lib/onlinepayments/sdk/response_header.rb +0 -42
  406. data/lib/onlinepayments/sdk/uploadable_file.rb +0 -30
  407. data/lib/onlinepayments/sdk/webhooks/webhooks.rb +0 -22
  408. data/lib/onlinepayments/sdk/webhooks/webhooks_helper_builder.rb +0 -25
@@ -1,286 +0,0 @@
1
- module OnlinePayments::SDK
2
- module Logging
3
-
4
- # Class responsible for obfuscating sensitive data in a message body.
5
- class ValueObfuscator
6
-
7
- class << self
8
-
9
- alias_method :private_new, :new
10
-
11
- protected :private_new, :new
12
- end
13
-
14
- public
15
-
16
- def self.INSTANCE
17
- # use lazy instantiation
18
- @@INSTANCE ||= ValueObfuscator.new
19
- end
20
-
21
- # Obfuscates the parameter value.
22
- def obfuscate_value(value)
23
- (value.nil? or value.empty?) ? value : "*#{value.length}"
24
- end
25
- end
26
-
27
- # end of ValueObfuscator
28
-
29
- # Class responsible for obfuscating sensitive data.
30
- class SensitiveValueObfuscator
31
-
32
- class << self
33
-
34
- alias_method :private_new, :new
35
-
36
- protected :private_new, :new
37
- end
38
-
39
- public
40
-
41
- def self.INSTANCE
42
- # use lazy instantiation
43
- @@INSTANCE ||= SensitiveValueObfuscator.new
44
- end
45
-
46
- # @return an arbitrary number of '*', or null/empty if the value is null/empty.
47
- def obfuscate_value(value)
48
- value.nil? or value.empty? ? value : "***"
49
- end
50
- end
51
-
52
- # end of SensitiveValueObfuscator
53
-
54
- class Obfuscator
55
- def initialize(obfuscators, case_insensitive)
56
- raise ArgumentError unless obfuscators.is_a? Hash
57
- @obfuscators = copy(obfuscators, case_insensitive)
58
- end
59
-
60
- private
61
-
62
- # case insensitive hash
63
- # @private
64
- class HashClod < Hash
65
-
66
- def initialize(other)
67
- other.each { |k, v| self.[]=(k, v) }
68
- end
69
-
70
- def [](key)
71
- super _insensitive(key)
72
- end
73
-
74
- def []=(key, value)
75
- super _insensitive(key), value
76
- end
77
-
78
- protected
79
-
80
- def _insensitive(key)
81
- key.respond_to?(:upcase) ? key.upcase : key
82
- end
83
- end
84
-
85
- # end of HashClod
86
-
87
- def copy(obfuscators, case_insensitive)
88
- cp = case_insensitive ? HashClod.new(obfuscators) : obfuscators
89
- Marshal.load(Marshal.dump(cp)) # deep copy
90
- end
91
-
92
- public
93
-
94
- def obfuscate_value(key, value)
95
- obfuscator = @obfuscators[key]
96
- if obfuscator.nil?
97
- value
98
- else
99
- obfuscator.obfuscate_value(value)
100
- end
101
- end
102
-
103
- # A convenient wrapper to build obfuscators
104
- class Builder
105
- attr_accessor :obfuscators
106
-
107
- def initialize
108
- raise NotImplementedError, "#{self.class.name} is not implemented."
109
- end
110
-
111
- def with_field(key)
112
- @obfuscators[key] = ValueObfuscator.INSTANCE
113
- self
114
- end
115
-
116
- def with_sensitive_field(key)
117
- @obfuscators[key] = SensitiveValueObfuscator.INSTANCE
118
- self
119
- end
120
-
121
- def build
122
- raise NotImplementedError, "#{self.class.name}#build() is not implemented."
123
- end
124
- end
125
-
126
- # Builder
127
- end
128
-
129
- # Obfuscator
130
-
131
- # Class that obfuscates headers of a message
132
- class HeaderObfuscator < Obfuscator
133
- def initialize(obfuscators)
134
- # case insensitive
135
- super(obfuscators, true)
136
- end
137
-
138
- def self.builder
139
- Builder.new
140
- end
141
-
142
- class Builder < Obfuscator::Builder
143
- def initialize
144
- @obfuscators = {}
145
- end
146
-
147
- def with_field(name)
148
- raise ArgumentError unless name.is_a? String
149
- super(name)
150
- end
151
-
152
- def with_sensitive_field(name)
153
- raise ArgumentError unless name.is_a? String
154
- super(name)
155
- end
156
-
157
- def build
158
- HeaderObfuscator.new(obfuscators)
159
- end
160
- end
161
- end
162
-
163
- # end of HeadObfuscator
164
-
165
- # Class that obfuscates properties in the JSON body of a message
166
- class PropertyObfuscator < Obfuscator
167
- def initialize(obfuscators)
168
- # case sensitive
169
- super(obfuscators, false)
170
- @property_pattern = build_property_pattern(obfuscators.keys)
171
- end
172
-
173
- private
174
-
175
- def build_property_pattern(pn)
176
- return /$^/ if pn.empty? # no possible match
177
- # Regex to create:
178
- # (["'])(X|Y|Z)\1\s*:\s*(?:(["'])(.*?)(?<!\\)\3|([^"'\s\[\{]\S*))
179
- # Groups:
180
- # 1: opening " or ' for the property name
181
- # 2: property name
182
- # 3: opening " or ' for the value
183
- # 4: quoted value
184
- # 5: non-quoted-value
185
- # The negative lookbehind is to allow escaped quotes to be part of
186
- # the value. What this does not allow currently is having values end
187
- # with a \ (which would be escaped to \\).
188
- regex = pn.inject("([\"'])(") { |r, p| "#{r}#{Regexp.quote(p)}|" }.chop <<
189
- ")\\1\\s*:\\s*(?:([\"'])(.*?)(?<!\\\\)\\3|([^\"'\\s\\[\\{]((?!,)\\S)*))"
190
- /#{regex}/m # dotall mode
191
- end
192
-
193
- public
194
-
195
- def obfuscate(body)
196
- return nil if body.nil?
197
- return "" if body.empty?
198
-
199
- body.gsub(@property_pattern) do
200
- m = Regexp.last_match
201
- property_name = m[2]
202
- value = m[4] || m[5]
203
- # copy value 'cause it's part of m[0]
204
- m[0].sub(value, obfuscate_value(property_name, value.dup))
205
- end
206
- end
207
-
208
- def self.builder
209
- Builder.new
210
- end
211
-
212
- class Builder < Obfuscator::Builder
213
- def initialize
214
- @obfuscators = {}
215
- end
216
-
217
- def with_field(property)
218
- raise ArgumentError unless property.is_a? String
219
- super(property)
220
- end
221
-
222
- def with_sensitive_field(property)
223
- raise ArgumentError unless property.is_a? String
224
- super(property)
225
- end
226
-
227
- def build
228
- PropertyObfuscator.new(obfuscators)
229
- end
230
- end
231
- end
232
-
233
- # end of property obfuscator
234
-
235
- module LoggingUtil
236
- @@PROPERTY_OBFUSCATOR = PropertyObfuscator.builder
237
- .with_field("cardNumber")
238
- .with_field("expiryDate")
239
- .with_field("cvv")
240
- .with_field("iban")
241
- .with_field("accountNumber")
242
- .with_field("reformattedAccountNumber")
243
- .with_field("additionalInfo")
244
- .with_field("cardholderName")
245
- .with_field("dateOfBirth")
246
- .with_field("emailAddress")
247
- .with_field("faxNumber")
248
- .with_field("firstName")
249
- .with_field("houseNumber")
250
- .with_field("mobilePhoneNumber")
251
- .with_field("passengerName")
252
- .with_field("phoneNumber")
253
- .with_field("street")
254
- .with_field("surname")
255
- .with_field("workPhoneNumber")
256
- .with_field("zip")
257
- .with_field("bin")
258
- .with_field("value")
259
- .with_sensitive_field("keyId")
260
- .with_sensitive_field("secretKey")
261
- .with_sensitive_field("publicKey")
262
- .with_sensitive_field("userAuthenticationToken")
263
- .with_sensitive_field("encryptedPayload")
264
- .with_sensitive_field("decryptedPayload")
265
- .with_sensitive_field("encryptedCustomerInput")
266
- .build
267
-
268
- @@HEADER_OBFUSCATOR = HeaderObfuscator.builder
269
- .with_sensitive_field("Authorization")
270
- .with_sensitive_field("WWW-Authenticate")
271
- .with_sensitive_field("Proxy-Authenticate")
272
- .with_sensitive_field("Proxy-Authorization")
273
- .with_sensitive_field("X-GCS-Authentication-Token")
274
- .with_sensitive_field("X-GCS-CallerPassword")
275
- .build
276
-
277
- def self.obfuscate_body(body)
278
- @@PROPERTY_OBFUSCATOR.obfuscate(body)
279
- end
280
-
281
- def self.obfuscate_header(name, value)
282
- @@HEADER_OBFUSCATOR.obfuscate_value(name, value)
283
- end
284
- end # end of LoggingUtil
285
- end
286
- end
@@ -1,24 +0,0 @@
1
- module OnlinePayments::SDK
2
-
3
- # Class responsible for marshalling and unmarshalling objects to and from JSON
4
- class Marshaller
5
-
6
- # Marshals _request_object_ to JSON format by calling #to_h on it.
7
- #
8
- # @param request_object [OnlinePayments::SDK::DataObject] the object to format
9
- # @return [String] _request_object_ converted to JSON
10
- def marshal(request_object)
11
- raise NotImplementedError
12
- end
13
-
14
- # Unmarshals a JSON string into an object of type _type_.
15
- # The new object is initialized by calling .new_from_hash with contents of the JSON as a Hash object.
16
- #
17
- # @param response_json [String] The JSON to unmarshal
18
- # @param type [Type] The class of the object that will be instantiated using _type.new_from_hash_
19
- # @return The JSON unmarshalled to the given type
20
- def unmarshal(response_json, type)
21
- raise NotImplementedError
22
- end
23
- end
24
- end
@@ -1,6 +0,0 @@
1
- module OnlinePayments::SDK
2
-
3
- # Raised when an error occurred while marshalling/unmarshalling data to/from JSON
4
- class MarshallerSyntaxException < RuntimeError
5
- end
6
- end
@@ -1,30 +0,0 @@
1
- #
2
- # This class was auto-generated.
3
- #
4
- require 'onlinepayments/sdk/param_request'
5
- require 'onlinepayments/sdk/request_param'
6
-
7
- module OnlinePayments::SDK
8
- module Merchant
9
- module Services
10
-
11
- # Query parameters for 'Get Privacy Policy'.
12
- # @attr [String] locale
13
- # @attr [Integer] payment_product_id
14
- class GetPrivacyPolicyParams < OnlinePayments::SDK::ParamRequest
15
-
16
- attr_accessor :locale
17
-
18
- attr_accessor :payment_product_id
19
-
20
- # @return [Array<OnlinePayments::SDK::RequestParam>] representing the attributes of this class
21
- def to_request_parameters
22
- result = []
23
- result << RequestParam.new('locale', @locale) unless @locale.nil?
24
- result << RequestParam.new('paymentProductId', @payment_product_id.to_s) unless @payment_product_id.nil?
25
- result
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,150 +0,0 @@
1
- require 'onlinepayments/sdk/domain/shopping_cart_extension'
2
- require 'base64'
3
-
4
- module OnlinePayments::SDK
5
-
6
- # Manages metadata about the server using the SDK
7
- #
8
- # @attr_reader [Array<OnlinePayments::SDK::RequestHeader>] meta_data_headers List of headers that should be used in all requests.
9
- class MetaDataProvider
10
- SDK_VERSION = '0.0.1'.freeze
11
- SERVER_META_INFO_HEADER = 'X-GCS-ServerMetaInfo'.freeze
12
- PROHIBITED_HEADERS = [SERVER_META_INFO_HEADER,
13
- 'X-GCS-Idempotence-Key', 'Date', 'Content-Type', 'Authorization'].sort!.freeze
14
- CHARSET = 'utf-8'.freeze
15
-
16
- # Stores metadata about the server so it can be sent to the Online Payments platform
17
- class ServerMetaInfo < DataObject
18
- @platform_identifier = nil
19
- @sdk_identifier = nil
20
- @sdk_creator = nil
21
- @integrator = nil
22
- @shopping_cart_extension = nil
23
-
24
- # String containing system information (Operating system and Ruby version).
25
- attr_accessor :platform_identifier
26
-
27
- # String containing this SDK version.
28
- attr_accessor :sdk_identifier
29
-
30
- attr_accessor :sdk_creator
31
-
32
- attr_accessor :integrator
33
-
34
- attr_accessor :shopping_cart_extension
35
-
36
- # Returns the values of all attributes as a hash.
37
- def to_h
38
- hash = super
39
- hash['platformIdentifier'] = @platform_identifier if @platform_identifier
40
- hash['sdkIdentifier'] = @sdk_identifier if @sdk_identifier
41
- hash['sdkCreator'] = @sdk_creator if @sdk_creator
42
- hash['integrator'] = @integrator if @integrator
43
- hash['shoppingCartExtension'] = @shopping_cart_extension.to_h if @shopping_cart_extension
44
- hash
45
- end
46
-
47
- # Initializes the ServerMetaInfo object with properties stored in the parameter hash
48
- def from_hash(hash)
49
- super
50
- @platform_identifier = hash['platformIdentifier'] if hash.has_key? 'platformIdentifier'
51
- @sdk_identifier = hash['sdkIdentifier'] if hash.has_key? 'sdkIdentifier'
52
- @sdk_creator = hash['sdkCreator'] if hash.has_key? 'sdkCreator'
53
- @integrator = hash['integrator'] if hash.has_key? 'integrator'
54
- @shopping_cart_extension = Domain::ShoppingCartExtension.new_from_hash(hash['shoppingCartExtension']) if hash.has_key? 'shoppingCartExtension'
55
- end
56
- end
57
-
58
- # Create a new MetaDataProvider instance that can be used to access platform-related information
59
- #
60
- # @param integrator [String] Name of the integrator
61
- # @param shopping_cart_extension [OnlinePayments::SDK::Domain::ShoppingCartExtension] shopping cart-related metadata.
62
- # @param additional_request_headers [Array<OnlinePayments::SDK::RequestHeader>] list of additional headers to include in all requests made.
63
- # The following headers are not allowed due to conflicts with already added headers:
64
- # 'X-GCS-Idempotence-Key', 'Date', 'Content-Type', 'Authorization' and 'X-GCS-ServerMetaInfo'
65
- def initialize(integrator, shopping_cart_extension: nil, additional_request_headers: [].freeze)
66
-
67
- MetaDataProvider.validate_additional_request_headers(additional_request_headers)
68
- server_meta_info = ServerMetaInfo.new
69
- server_meta_info.platform_identifier = get_platform_identifier
70
- server_meta_info.sdk_identifier = get_sdk_identifier
71
- server_meta_info.sdk_creator = 'OnlinePayments'
72
- server_meta_info.integrator = integrator
73
- server_meta_info.shopping_cart_extension = shopping_cart_extension if shopping_cart_extension
74
- server_meta_info_string = DefaultImpl::DefaultMarshaller.INSTANCE.marshal(server_meta_info)
75
- server_meta_info_header = RequestHeader.new(
76
- SERVER_META_INFO_HEADER,
77
- Base64.strict_encode64(server_meta_info_string.force_encoding('iso-8859-1').encode(CHARSET)))
78
- if additional_request_headers.nil? || additional_request_headers.empty?
79
- @meta_data_headers = [server_meta_info_header].freeze
80
- else
81
- request_headers = [server_meta_info_header]
82
- request_headers += additional_request_headers
83
- @meta_data_headers = request_headers.freeze
84
- end
85
- end
86
-
87
- # Checks that none of the {OnlinePayments::SDK::RequestHeaders} in _additional_request_headers_ is equal to any of the forbidden headers.
88
- # The forbidden headers are:
89
- #'X-GCS-Idempotence-Key', 'Date', 'Content-Type', 'Authorization' and 'X-GCS-ServerMetaInfo'
90
- # If a header is found that is equal to one of the forbidden headers an ArgumentError is raised.
91
- def self.validate_additional_request_headers(additional_request_headers)
92
- if additional_request_headers
93
- additional_request_headers.each { |additional_request_header|
94
- validate_additional_request_header(additional_request_header)
95
- }
96
- end
97
- end
98
-
99
- # Checks that the {OnlinePayments::SDK::RequestHeaders} _additional_request_header_ is equal to any of the forbidden headers.
100
- # The forbidden headers are:
101
- #'X-GCS-Idempotence-Key', 'Date', 'Content-Type', 'Authorization' and 'X-GCS-ServerMetaInfo'
102
- # If the header is equal to one of the forbidden headers an ArgumentError is raised.
103
- def self.validate_additional_request_header(additional_request_header)
104
- if MetaDataProvider.PROHIBITED_HEADERS.include? additional_request_header.name
105
- raise ArgumentError, "request header '#{additional_request_header.name}' not allowed"
106
- end
107
- end
108
-
109
- protected
110
-
111
- # String containing information of the system using the SDK.
112
- # It contains data like Operating System version and Ruby version
113
- def get_platform_identifier
114
- os_host = RbConfig::CONFIG['host_os']
115
- if os_host.include? 'mingw'
116
- s = 'Windows'
117
- elsif os_host.include? 'linux'
118
- s = 'Linux'
119
- else
120
- s = 'Mac OS X'
121
- end
122
- "#{s}/#{RUBY_DESCRIPTION}"
123
- end
124
-
125
- # String describing the version of the SDK being used
126
- def get_sdk_identifier
127
- "RubyServerSDK/v#{SDK_VERSION}"
128
- end
129
-
130
- public
131
-
132
- # Version of this SDK being used
133
- def self.SDK_VERSION
134
- SDK_VERSION
135
- end
136
-
137
- # A {OnlinePayments::SDK::RequestHeader} that contains serialized and encoded {OnlinePayments::SDK::MetaDataProvider::ServerMetaInfo}.
138
- def self.SERVER_META_INFO_HEADER
139
- SERVER_META_INFO_HEADER
140
- end
141
-
142
- # A list of header names that should not be used by any added headers.
143
- # These headers are reserved for specific purposes.
144
- def self.PROHIBITED_HEADERS
145
- PROHIBITED_HEADERS
146
- end
147
-
148
- attr_reader :meta_data_headers
149
- end
150
- end
@@ -1,62 +0,0 @@
1
- # Main module of this SDK. All non-data classes that are used at multiple places in the SDK are placed in this module.
2
- module OnlinePayments::SDK
3
- end
4
-
5
- # Contains provided implementations for abstract functionality in this SDK.
6
- # These implementations can be replaced or adapted if desired to suit specific needs.
7
- module OnlinePayments::SDK::DefaultImpl
8
- end
9
-
10
- # Container for all data-containing modules.
11
- # The data-classes contained within can be serialized and communicated with the Online Payments platform.
12
- # These classes generally contain data used in processing requests or responses.
13
- module OnlinePayments::SDK::Domain
14
- end
15
-
16
- # Contains all logging-related classes.
17
- module OnlinePayments::SDK::Logging
18
- end
19
-
20
- # Contains interfaces to all Online Payments services. These services are accessed through a *OnlinePayments::SDK::Client* instance.
21
- module OnlinePayments::SDK::Merchant
22
- end
23
-
24
- # Contains the client used to access the Hosted Checkout service.
25
- module OnlinePayments::SDK::Merchant::HostedCheckout
26
- end
27
-
28
- # Contains the client used to access the Hosted Tokenization service.
29
- module OnlinePayments::SDK::Merchant::HostedTokenization
30
- end
31
-
32
- # Contains the client used to access the Payment service.
33
- module OnlinePayments::SDK::Merchant::Payments
34
- end
35
-
36
- # Contains the client used to access the Payout service.
37
- module OnlinePayments::SDK::Merchant::Payouts
38
- end
39
-
40
- # Contains the client used to access the Product Groups service.
41
- module OnlinePayments::SDK::Merchant::ProductGroups
42
- end
43
-
44
- # Contains the client used to access the Products service.
45
- module OnlinePayments::SDK::Merchant::Products
46
- end
47
-
48
- # Contains the client to access miscellaneous services.
49
- module OnlinePayments::SDK::Merchant::Services
50
- end
51
-
52
- # Contains the client used to access the Sessions service.
53
- module OnlinePayments::SDK::Merchant::Sessions
54
- end
55
-
56
- # Contains the client used to access the Tokens service.
57
- module OnlinePayments::SDK::Merchant::Tokens
58
- end
59
-
60
- # Contains data classes related to Webhooks functionality.
61
- module OnlinePayments::SDK::Webhooks
62
- end
@@ -1,44 +0,0 @@
1
- require 'securerandom'
2
-
3
- module OnlinePayments::SDK
4
-
5
- # A representation of a multipart/form-data object
6
- class MultipartFormDataObject
7
- def initialize
8
- @boundary = SecureRandom.uuid
9
- @content_type = 'multipart/form-data; boundary=' + @boundary
10
- @values = {}
11
- @files = {}
12
- end
13
-
14
- attr_reader :boundary
15
- attr_reader :content_type
16
- attr_reader :values
17
- attr_reader :files
18
-
19
- def add_value(parameter_name, value)
20
- if parameter_name.nil? || parameter_name.strip.empty?
21
- raise ArgumentError, 'parameter_name is required'
22
- end
23
- raise ArgumentError, 'value is required' if value.nil?
24
- if @values.include?(parameter_name) || @files.include?(parameter_name)
25
- raise ArgumentError, 'duplicate parameterName: ' + parameter_name
26
- end
27
-
28
- @values[parameter_name] = value
29
- end
30
-
31
- # Adds a file to the multipart Form Data Object
32
- def add_file(parameter_name, uploadable_file)
33
- if parameter_name.nil? || parameter_name.strip.empty?
34
- raise ArgumentError, 'parameter_name is required'
35
- end
36
- raise ArgumentError, 'uploadable_file is required' if uploadable_file.nil?
37
- if @values.include?(parameter_name) || @files.include?(parameter_name)
38
- raise ArgumentError, 'duplicate parameterName: ' + parameter_name
39
- end
40
-
41
- @files[parameter_name] = uploadable_file
42
- end
43
- end
44
- end
@@ -1,9 +0,0 @@
1
- module OnlinePayments::SDK
2
- # A representation of a multipart/form-data request
3
- class MultipartFormDataRequest
4
- # @return [OnlinePayments::SDK::MultipartFormDataObject]
5
- def to_multipart_form_data_object
6
- raise NotImplementedError
7
- end
8
- end
9
- end
@@ -1,16 +0,0 @@
1
- module OnlinePayments::SDK
2
-
3
- # Raised when a resource is not found on the Online Payments platform.
4
- # This error corresponds to a 404 HTTP response.
5
- #
6
- # @attr [Exception] cause The error that is the cause of this error.
7
- class NotFoundException < RuntimeError
8
-
9
- def initialize(cause, message = nil)
10
- super(message)
11
- @cause = cause
12
- end
13
-
14
- attr_accessor :cause
15
- end
16
- end
@@ -1,11 +0,0 @@
1
- module OnlinePayments::SDK
2
-
3
- # Class that represents the URL request parameters.
4
- # Contains a method to add a name and value pair to a parameter array as a {OnlinePayments::SDK::RequestParam}.
5
- class ParamRequest
6
- # @return [Array<OnlinePayments::SDK::RequestParam>]
7
- def to_request_parameters
8
- raise NotImplementedError
9
- end
10
- end
11
- end
@@ -1,15 +0,0 @@
1
- module OnlinePayments::SDK
2
-
3
- # This exception is thrown when a response from the payment platform indicates that an error occurred
4
- # on the payment platform while processing the request.
5
- # This corresponds to a HTTP status code of 500 or 502.
6
- class PaymentPlatformException < ApiException
7
-
8
- # Create a new PaymentPlatformException
9
- # @see ApiException#initialize
10
- def initialize(status_code, response_body, error_id, errors,
11
- message = 'the Online Payments platform returned an error response')
12
- super(status_code, response_body, error_id, errors, message)
13
- end
14
- end
15
- end
@@ -1,21 +0,0 @@
1
- module OnlinePayments::SDK
2
-
3
- # {OnlinePayments::SDK::Connection} that supports connection pooling. This is used to more efficiently communicate using HTTP.
4
- # Connection pooling means that a number of connections are kept alive after use so they can possibly be reused.
5
- # If the Connection does not do so automatically,
6
- # the methods _close_idle_connections_ and _close_expired_connections_ can be used to drop connections
7
- # that are idle for a specified amount of time or that have expired.
8
- # @see OnlinePayments::SDK::DefaultImpl::DefaultConnection
9
- class PooledConnection < Connection
10
-
11
- # Closes all connections that have not been used for _idle_time_ seconds.
12
- def close_idle_connections(idle_time)
13
- raise NotImplementedError
14
- end
15
-
16
- # Closes all connections that have expired.
17
- def close_expired_connections
18
- raise NotImplementedError
19
- end
20
- end
21
- end