activemerchant-est 1.4.2.5
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.
- data/CHANGELOG +480 -0
- data/CONTRIBUTORS +126 -0
- data/MIT-LICENSE +20 -0
- data/README +136 -0
- data/Rakefile +154 -0
- data/gem-public_cert.pem +20 -0
- data/init.rb +3 -0
- data/lib/active_merchant.rb +66 -0
- data/lib/active_merchant/billing/avs_result.rb +98 -0
- data/lib/active_merchant/billing/base.rb +57 -0
- data/lib/active_merchant/billing/check.rb +68 -0
- data/lib/active_merchant/billing/credit_card.rb +159 -0
- data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
- data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
- data/lib/active_merchant/billing/cvv_result.rb +38 -0
- data/lib/active_merchant/billing/expiry_date.rb +34 -0
- data/lib/active_merchant/billing/gateway.rb +158 -0
- data/lib/active_merchant/billing/gateways.rb +18 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +736 -0
- data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
- data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
- data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
- data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
- data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
- data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
- data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
- data/lib/active_merchant/billing/gateways/elavon.rb +134 -0
- data/lib/active_merchant/billing/gateways/eway.rb +277 -0
- data/lib/active_merchant/billing/gateways/exact.rb +222 -0
- data/lib/active_merchant/billing/gateways/first_pay.rb +172 -0
- data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
- data/lib/active_merchant/billing/gateways/jetpay.rb +270 -0
- data/lib/active_merchant/billing/gateways/linkpoint.rb +449 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
- data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +220 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +205 -0
- data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
- data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
- data/lib/active_merchant/billing/gateways/ogone.rb +279 -0
- data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
- data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
- data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
- data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
- data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
- data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
- data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
- data/lib/active_merchant/billing/gateways/paypal.rb +121 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +326 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
- data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
- data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
- data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
- data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
- data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
- data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
- data/lib/active_merchant/billing/gateways/realex.rb +200 -0
- data/lib/active_merchant/billing/gateways/sage.rb +146 -0
- data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
- data/lib/active_merchant/billing/gateways/sage/sage_core.rb +116 -0
- data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
- data/lib/active_merchant/billing/gateways/sage_pay.rb +308 -0
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +144 -0
- data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
- data/lib/active_merchant/billing/gateways/skip_jack.rb +452 -0
- data/lib/active_merchant/billing/gateways/smart_ps.rb +265 -0
- data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
- data/lib/active_merchant/billing/gateways/transax.rb +26 -0
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
- data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
- data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
- data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
- data/lib/active_merchant/billing/integrations.rb +28 -0
- data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
- data/lib/active_merchant/billing/integrations/adyen.rb +29 -0
- data/lib/active_merchant/billing/integrations/adyen/helper.rb +103 -0
- data/lib/active_merchant/billing/integrations/adyen/notification.rb +91 -0
- data/lib/active_merchant/billing/integrations/adyen/return.rb +52 -0
- data/lib/active_merchant/billing/integrations/bogus.rb +23 -0
- data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
- data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
- data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/chronopay.rb +23 -0
- data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
- data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
- data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/gestpay.rb +25 -0
- data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
- data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
- data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
- data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/helper.rb +93 -0
- data/lib/active_merchant/billing/integrations/hi_trust.rb +27 -0
- data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
- data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
- data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
- data/lib/active_merchant/billing/integrations/nochex.rb +88 -0
- data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
- data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
- data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/notification.rb +68 -0
- data/lib/active_merchant/billing/integrations/paypal.rb +39 -0
- data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
- data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
- data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/pizza.rb +116 -0
- data/lib/active_merchant/billing/integrations/pizza/helper.rb +117 -0
- data/lib/active_merchant/billing/integrations/pizza/notification.rb +101 -0
- data/lib/active_merchant/billing/integrations/quickpay.rb +17 -0
- data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
- data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
- data/lib/active_merchant/billing/integrations/return.rb +35 -0
- data/lib/active_merchant/billing/integrations/sampo_est.rb +101 -0
- data/lib/active_merchant/billing/integrations/sampo_est/helper.rb +17 -0
- data/lib/active_merchant/billing/integrations/sampo_est/notification.rb +12 -0
- data/lib/active_merchant/billing/integrations/seb_est.rb +100 -0
- data/lib/active_merchant/billing/integrations/seb_est/helper.rb +16 -0
- data/lib/active_merchant/billing/integrations/seb_est/notification.rb +12 -0
- data/lib/active_merchant/billing/integrations/swedbank_est.rb +99 -0
- data/lib/active_merchant/billing/integrations/swedbank_est/helper.rb +20 -0
- data/lib/active_merchant/billing/integrations/swedbank_est/notification.rb +12 -0
- data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
- data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
- data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
- data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
- data/lib/active_merchant/billing/response.rb +32 -0
- data/lib/active_merchant/lib/connection.rb +170 -0
- data/lib/active_merchant/lib/country.rb +319 -0
- data/lib/active_merchant/lib/error.rb +4 -0
- data/lib/active_merchant/lib/post_data.rb +22 -0
- data/lib/active_merchant/lib/posts_data.rb +47 -0
- data/lib/active_merchant/lib/requires_parameters.rb +16 -0
- data/lib/active_merchant/lib/utils.rb +18 -0
- data/lib/active_merchant/lib/validateable.rb +76 -0
- data/lib/certs/cacert.pem +7815 -0
- data/lib/support/gateway_support.rb +58 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/test/fixtures.yml +355 -0
- data/test/remote/gateways/remote_authorize_net_cim_test.rb +460 -0
- data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
- data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
- data/test/remote/gateways/remote_beanstream_test.rb +150 -0
- data/test/remote/gateways/remote_braintree_test.rb +154 -0
- data/test/remote/gateways/remote_card_stream_test.rb +148 -0
- data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
- data/test/remote/gateways/remote_data_cash_test.rb +357 -0
- data/test/remote/gateways/remote_efsnet_test.rb +81 -0
- data/test/remote/gateways/remote_elavon_test.rb +66 -0
- data/test/remote/gateways/remote_eway_test.rb +74 -0
- data/test/remote/gateways/remote_exact_test.rb +60 -0
- data/test/remote/gateways/remote_first_pay_test.rb +87 -0
- data/test/remote/gateways/remote_instapay_test.rb +61 -0
- data/test/remote/gateways/remote_jetpay_test.rb +103 -0
- data/test/remote/gateways/remote_linkpoint_test.rb +121 -0
- data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
- data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
- data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
- data/test/remote/gateways/remote_modern_payments_test.rb +57 -0
- data/test/remote/gateways/remote_moneris_test.rb +82 -0
- data/test/remote/gateways/remote_net_registry_test.rb +85 -0
- data/test/remote/gateways/remote_netbilling_test.rb +70 -0
- data/test/remote/gateways/remote_ogone_test.rb +115 -0
- data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
- data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
- data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
- data/test/remote/gateways/remote_payflow_test.rb +237 -0
- data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
- data/test/remote/gateways/remote_payment_express_test.rb +136 -0
- data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
- data/test/remote/gateways/remote_paypal_test.rb +191 -0
- data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
- data/test/remote/gateways/remote_psigate_test.rb +50 -0
- data/test/remote/gateways/remote_psl_card_test.rb +125 -0
- data/test/remote/gateways/remote_quickpay_test.rb +190 -0
- data/test/remote/gateways/remote_realex_test.rb +224 -0
- data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
- data/test/remote/gateways/remote_sage_pay_test.rb +219 -0
- data/test/remote/gateways/remote_sage_test.rb +87 -0
- data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
- data/test/remote/gateways/remote_sallie_mae_test.rb +51 -0
- data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
- data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
- data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
- data/test/remote/gateways/remote_skipjack_test.rb +105 -0
- data/test/remote/gateways/remote_trans_first_test.rb +34 -0
- data/test/remote/gateways/remote_transax_test.rb +112 -0
- data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
- data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
- data/test/remote/gateways/remote_verifi_test.rb +107 -0
- data/test/remote/gateways/remote_viaklix_test.rb +43 -0
- data/test/remote/gateways/remote_wirecard_test.rb +111 -0
- data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
- data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
- data/test/test_helper.rb +182 -0
- data/test/unit/avs_result_test.rb +59 -0
- data/test/unit/base_test.rb +55 -0
- data/test/unit/check_test.rb +88 -0
- data/test/unit/connection_test.rb +129 -0
- data/test/unit/country_code_test.rb +33 -0
- data/test/unit/country_test.rb +64 -0
- data/test/unit/credit_card_formatting_test.rb +19 -0
- data/test/unit/credit_card_methods_test.rb +179 -0
- data/test/unit/credit_card_test.rb +318 -0
- data/test/unit/cvv_result_test.rb +33 -0
- data/test/unit/expiry_date_test.rb +32 -0
- data/test/unit/gateways/authorize_net_cim_test.rb +676 -0
- data/test/unit/gateways/authorize_net_test.rb +290 -0
- data/test/unit/gateways/beanstream_interac_test.rb +51 -0
- data/test/unit/gateways/beanstream_test.rb +108 -0
- data/test/unit/gateways/bogus_test.rb +46 -0
- data/test/unit/gateways/braintree_test.rb +126 -0
- data/test/unit/gateways/card_stream_test.rb +90 -0
- data/test/unit/gateways/cyber_source_test.rb +188 -0
- data/test/unit/gateways/data_cash_test.rb +133 -0
- data/test/unit/gateways/efsnet_test.rb +123 -0
- data/test/unit/gateways/elavon_test.rb +139 -0
- data/test/unit/gateways/eway_test.rb +118 -0
- data/test/unit/gateways/exact_test.rb +156 -0
- data/test/unit/gateways/first_pay_test.rb +125 -0
- data/test/unit/gateways/gateway_test.rb +48 -0
- data/test/unit/gateways/instapay_test.rb +102 -0
- data/test/unit/gateways/jetpay_test.rb +185 -0
- data/test/unit/gateways/linkpoint_test.rb +197 -0
- data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
- data/test/unit/gateways/merchant_ware_test.rb +188 -0
- data/test/unit/gateways/modern_payments_cim_test.rb +162 -0
- data/test/unit/gateways/moneris_test.rb +158 -0
- data/test/unit/gateways/net_registry_test.rb +416 -0
- data/test/unit/gateways/netbilling_test.rb +54 -0
- data/test/unit/gateways/ogone_test.rb +319 -0
- data/test/unit/gateways/pay_junction_test.rb +123 -0
- data/test/unit/gateways/pay_secure_test.rb +71 -0
- data/test/unit/gateways/payflow_express_test.rb +173 -0
- data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
- data/test/unit/gateways/payflow_test.rb +305 -0
- data/test/unit/gateways/payflow_uk_test.rb +30 -0
- data/test/unit/gateways/payment_express_test.rb +195 -0
- data/test/unit/gateways/paypal_express_test.rb +382 -0
- data/test/unit/gateways/paypal_test.rb +569 -0
- data/test/unit/gateways/plugnpay_test.rb +86 -0
- data/test/unit/gateways/psigate_test.rb +169 -0
- data/test/unit/gateways/psl_card_test.rb +64 -0
- data/test/unit/gateways/quickpay_test.rb +112 -0
- data/test/unit/gateways/realex_test.rb +151 -0
- data/test/unit/gateways/sage_bankcard_test.rb +196 -0
- data/test/unit/gateways/sage_pay_test.rb +139 -0
- data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
- data/test/unit/gateways/sallie_mae_test.rb +53 -0
- data/test/unit/gateways/secure_pay_au_test.rb +207 -0
- data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
- data/test/unit/gateways/secure_pay_test.rb +87 -0
- data/test/unit/gateways/skip_jack_test.rb +213 -0
- data/test/unit/gateways/trans_first_test.rb +112 -0
- data/test/unit/gateways/trust_commerce_test.rb +90 -0
- data/test/unit/gateways/usa_epay_test.rb +128 -0
- data/test/unit/gateways/verifi_test.rb +96 -0
- data/test/unit/gateways/viaklix_test.rb +78 -0
- data/test/unit/gateways/wirecard_test.rb +250 -0
- data/test/unit/generators/test_gateway_generator.rb +46 -0
- data/test/unit/generators/test_generator_helper.rb +20 -0
- data/test/unit/generators/test_integration_generator.rb +53 -0
- data/test/unit/integrations/action_view_helper_test.rb +50 -0
- data/test/unit/integrations/adyen_module_test.rb +9 -0
- data/test/unit/integrations/bogus_module_test.rb +20 -0
- data/test/unit/integrations/chronopay_module_test.rb +13 -0
- data/test/unit/integrations/gestpay_module_test.rb +14 -0
- data/test/unit/integrations/helpers/adyen_helper_test.rb +35 -0
- data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
- data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
- data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
- data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
- data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
- data/test/unit/integrations/helpers/paypal_helper_test.rb +171 -0
- data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
- data/test/unit/integrations/helpers/seb_est_helper_test.rb +69 -0
- data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
- data/test/unit/integrations/hi_trust_module_test.rb +13 -0
- data/test/unit/integrations/nochex_module_test.rb +13 -0
- data/test/unit/integrations/notifications/adyen_notification_test.rb +25 -0
- data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
- data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
- data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
- data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
- data/test/unit/integrations/notifications/notification_test.rb +54 -0
- data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
- data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
- data/test/unit/integrations/notifications/seb_est_notification_test.rb +87 -0
- data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
- data/test/unit/integrations/paypal_module_test.rb +28 -0
- data/test/unit/integrations/quickpay_module_test.rb +9 -0
- data/test/unit/integrations/returns/adyen_return_test.rb +26 -0
- data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
- data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
- data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
- data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
- data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
- data/test/unit/integrations/returns/return_test.rb +11 -0
- data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
- data/test/unit/integrations/sampo_est_module_test.rb +9 -0
- data/test/unit/integrations/seb_est_module_test.rb +9 -0
- data/test/unit/integrations/swedbank_est_module_test.rb +9 -0
- data/test/unit/integrations/two_checkout_module_test.rb +13 -0
- data/test/unit/post_data_test.rb +55 -0
- data/test/unit/posts_data_test.rb +48 -0
- data/test/unit/response_test.rb +28 -0
- data/test/unit/utils_test.rb +7 -0
- data/test/unit/validateable_test.rb +60 -0
- metadata +392 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module SebEst #:nodoc:
|
|
5
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification #:nodoc:
|
|
6
|
+
include Pizza::Common
|
|
7
|
+
include Pizza::Notification
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/swedbank_est/helper.rb'
|
|
2
|
+
require File.dirname(__FILE__) + '/swedbank_est/notification.rb'
|
|
3
|
+
|
|
4
|
+
module ActiveMerchant #:nodoc:
|
|
5
|
+
module Billing #:nodoc:
|
|
6
|
+
module Integrations #:nodoc:
|
|
7
|
+
|
|
8
|
+
# This module implements bank payments through
|
|
9
|
+
# Aktsiaselts Hansapank using their bank link service
|
|
10
|
+
# (http://w.hansa.ee/eng/arikliendile_teenusedkaupmehele_makselahendusedinternetis_tehnilinekirjeldus.html).
|
|
11
|
+
#
|
|
12
|
+
# Configuration:
|
|
13
|
+
# ActiveMerchant::Billing::Integrations::SwedbankEst.bank_certificate = File.read('cert')
|
|
14
|
+
# ActiveMerchant::Billing::Integrations::SwedbankEst.test_bank_certificate = File.read('cert')
|
|
15
|
+
# ActiveMerchant::Billing::Integrations::SwedbankEst.private_key = File.read('keyfile')
|
|
16
|
+
# ActiveMerchant::Billing::Integrations::SwedbankEst.test_private_key = File.read('keyfile')
|
|
17
|
+
# ActiveMerchant::Billing::Integrations::SwedbankEst.production_url = 'https://production-gateway.tld/gw/'
|
|
18
|
+
#
|
|
19
|
+
#
|
|
20
|
+
# The syntax of the helper is as follows:
|
|
21
|
+
# <% payment_service_for order_id, account_id,
|
|
22
|
+
# :amount => 50.00,
|
|
23
|
+
# :service => :swedbank_est do |service| %>
|
|
24
|
+
#
|
|
25
|
+
# <% service.notify_url url_for(:action => 'notify', :only_path => false) %>
|
|
26
|
+
# <% service.cancel_return_url 'http://mystore.com' %>
|
|
27
|
+
# <% end %>
|
|
28
|
+
#
|
|
29
|
+
# The order_id parameter is a random id referencing the transaction (VK_STAMP)
|
|
30
|
+
# The account_id parameter is a id given to you from the bank (VK_SND_ID)
|
|
31
|
+
# The notify_url is the URL that the bank will send its responses.
|
|
32
|
+
#
|
|
33
|
+
# You can handle the notification in
|
|
34
|
+
# your controller action as follows:
|
|
35
|
+
#
|
|
36
|
+
# class NotificationController < ApplicationController
|
|
37
|
+
# include ActiveMerchant::Billing::Integrations
|
|
38
|
+
#
|
|
39
|
+
# def notify
|
|
40
|
+
# # Notification class is automatically fetched based on the request parameters.
|
|
41
|
+
# notify = Pizza::Notification.get_notification(params)
|
|
42
|
+
#
|
|
43
|
+
# if notify.acknowledge
|
|
44
|
+
# ... process order ... if notify.complete?
|
|
45
|
+
# else
|
|
46
|
+
# ... log possible hacking attempt ...
|
|
47
|
+
# end
|
|
48
|
+
# end
|
|
49
|
+
# end
|
|
50
|
+
|
|
51
|
+
module SwedbankEst
|
|
52
|
+
|
|
53
|
+
# Raw X509 certificate of the bank, string format.
|
|
54
|
+
mattr_accessor :bank_certificate
|
|
55
|
+
mattr_accessor :test_bank_certificate
|
|
56
|
+
# RSA public key of the bank, taken from the X509 certificate of the bank. OpenSSL container.
|
|
57
|
+
def self.get_bank_public_key
|
|
58
|
+
if ActiveMerchant::Billing::Base.integration_mode == :production
|
|
59
|
+
cert = self.bank_certificate
|
|
60
|
+
else
|
|
61
|
+
cert = self.test_bank_certificate
|
|
62
|
+
end
|
|
63
|
+
OpenSSL::X509::Certificate.new(cert.gsub(/ /, '')).public_key
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
mattr_accessor :private_key
|
|
67
|
+
mattr_accessor :test_private_key
|
|
68
|
+
# Our RSA private key. OpenSSL container.
|
|
69
|
+
def self.get_private_key
|
|
70
|
+
if ActiveMerchant::Billing::Base.integration_mode == :production
|
|
71
|
+
private_key = self.private_key
|
|
72
|
+
else
|
|
73
|
+
private_key = self.test_private_key
|
|
74
|
+
end
|
|
75
|
+
OpenSSL::PKey::RSA.new(private_key.gsub(/ /, ''))
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
mattr_accessor :test_url
|
|
79
|
+
mattr_accessor :production_url
|
|
80
|
+
def self.service_url
|
|
81
|
+
mode = ActiveMerchant::Billing::Base.integration_mode
|
|
82
|
+
case mode
|
|
83
|
+
when :production
|
|
84
|
+
self.production_url
|
|
85
|
+
when :test
|
|
86
|
+
self.test_url
|
|
87
|
+
else
|
|
88
|
+
raise StandardError, "Integration mode set to an invalid value: #{mode}"
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def self.notification(post)
|
|
93
|
+
Notification.new(post)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module SwedbankEst #:nodoc:
|
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper #:nodoc:
|
|
6
|
+
include Pizza::Common
|
|
7
|
+
include Pizza::Helper
|
|
8
|
+
|
|
9
|
+
def vk_charset
|
|
10
|
+
'UTF-8'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def vk_charset_param
|
|
14
|
+
'VK_ENCODING'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module SwedbankEst #:nodoc:
|
|
5
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification #:nodoc:
|
|
6
|
+
include Pizza::Common
|
|
7
|
+
include Pizza::Notification
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
module ActiveMerchant #:nodoc:
|
|
3
|
+
module Billing #:nodoc:
|
|
4
|
+
module Integrations #:nodoc:
|
|
5
|
+
module TwoCheckout
|
|
6
|
+
autoload 'Helper', File.dirname(__FILE__) + '/two_checkout/helper'
|
|
7
|
+
autoload 'Return', File.dirname(__FILE__) + '/two_checkout/return'
|
|
8
|
+
autoload 'Notification', File.dirname(__FILE__) + '/two_Checkout/notification'
|
|
9
|
+
|
|
10
|
+
mattr_accessor :service_url
|
|
11
|
+
self.service_url = 'https://www.2checkout.com/2co/buyer/purchase'
|
|
12
|
+
|
|
13
|
+
def self.notification(post)
|
|
14
|
+
Notification.new(post)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.return(query_string)
|
|
18
|
+
Return.new(query_string)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module TwoCheckout
|
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
|
6
|
+
def initialize(order, account, options = {})
|
|
7
|
+
super
|
|
8
|
+
add_field('fixed', 'Y')
|
|
9
|
+
|
|
10
|
+
if ActiveMerchant::Billing::Base.integration_mode == :test || options[:test]
|
|
11
|
+
add_field('demo', 'Y')
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# The 2checkout vendor account number
|
|
16
|
+
mapping :account, 'sid'
|
|
17
|
+
|
|
18
|
+
# he total amount to be billed, in decimal form, without a currency symbol. (8 characters, decimal, 2 characters: Example: 99999999.99)
|
|
19
|
+
mapping :amount, 'total'
|
|
20
|
+
|
|
21
|
+
# a unique order id from your program. (128 characters max)
|
|
22
|
+
mapping :order, 'cart_order_id'
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
mapping :customer, :email => 'email',
|
|
26
|
+
:phone => 'phone'
|
|
27
|
+
|
|
28
|
+
mapping :billing_address, :city => 'city',
|
|
29
|
+
:address1 => 'street_address',
|
|
30
|
+
:address2 => 'street_address2',
|
|
31
|
+
:state => 'state',
|
|
32
|
+
:zip => 'zip',
|
|
33
|
+
:country => 'country'
|
|
34
|
+
|
|
35
|
+
mapping :shipping_address, :city => 'ship_city',
|
|
36
|
+
:address1 => 'ship_street_address',
|
|
37
|
+
:state => 'ship_state',
|
|
38
|
+
:zip => 'ship_zip',
|
|
39
|
+
:country => 'ship_country'
|
|
40
|
+
|
|
41
|
+
mapping :invoice, 'merchant_order_id'
|
|
42
|
+
|
|
43
|
+
# Does nothing, since we've disabled the Continue Shopping button by using the fixed = Y field
|
|
44
|
+
mapping :return_url, 'return_url'
|
|
45
|
+
|
|
46
|
+
#mapping :description, ''
|
|
47
|
+
#mapping :tax, ''
|
|
48
|
+
#mapping :shipping, ''
|
|
49
|
+
|
|
50
|
+
def customer(params = {})
|
|
51
|
+
add_field(mappings[:customer][:email], params[:email])
|
|
52
|
+
add_field(mappings[:customer][:phone], params[:phone])
|
|
53
|
+
add_field('card_holder_name', "#{params[:first_name]} #{params[:last_name]}")
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
require 'base64'
|
|
3
|
+
require 'digest/md5'
|
|
4
|
+
|
|
5
|
+
module ActiveMerchant #:nodoc:
|
|
6
|
+
module Billing #:nodoc:
|
|
7
|
+
module Integrations #:nodoc:
|
|
8
|
+
module TwoCheckout
|
|
9
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification
|
|
10
|
+
# order_number 2Checkout.com order number
|
|
11
|
+
# card_holder_name Card holder's name
|
|
12
|
+
# street_address Card holder's address
|
|
13
|
+
# city Card holder's city
|
|
14
|
+
# state Card holder's state
|
|
15
|
+
# zip Card holder's zip
|
|
16
|
+
# country Card holder's country
|
|
17
|
+
# email Card holder's email
|
|
18
|
+
# phone Card holder's phone
|
|
19
|
+
# credit_card_processed Y if successful, K if waiting for approval
|
|
20
|
+
# total Total purchase amount
|
|
21
|
+
# ship_name Shipping information
|
|
22
|
+
# ship_street_address Shipping information
|
|
23
|
+
# ship_city Shipping information
|
|
24
|
+
# ship_state Shipping information
|
|
25
|
+
# ship_zip Shipping information
|
|
26
|
+
# ship_country Shipping information
|
|
27
|
+
# product_id 2Checkout product ID for purchased items will append a number if more than one item.
|
|
28
|
+
# ex. product_id,product_id1,product_id2
|
|
29
|
+
# quantity quantity of corresponding product will append a number if more than one item.
|
|
30
|
+
# ex. quantity,quantity1,quantity2
|
|
31
|
+
# merchant_product_id your product ID for purchased items will append a number if more than one item.
|
|
32
|
+
# ex. merchant_product_id,merchant_product_id1,merchant_product_id2
|
|
33
|
+
# product_description your description for purchased items will append a number if more than one item.
|
|
34
|
+
# ex. product_description,product_description1,product_description2
|
|
35
|
+
|
|
36
|
+
def currency
|
|
37
|
+
'USD'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def complete?
|
|
41
|
+
status == 'Completed'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def item_id
|
|
45
|
+
params['cart_order_id']
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def transaction_id
|
|
49
|
+
params['order_number']
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def received_at
|
|
53
|
+
params['']
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def payer_email
|
|
57
|
+
params['email']
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def receiver_email
|
|
61
|
+
params['']
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# The MD5 Hash
|
|
65
|
+
def security_key
|
|
66
|
+
params['key']
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# the money amount we received in X.2 decimal.
|
|
70
|
+
def gross
|
|
71
|
+
params['total']
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Was this a test transaction? # Use the hash
|
|
75
|
+
def test?
|
|
76
|
+
params['demo'] == 'Y'
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def status
|
|
80
|
+
case params['credit_card_processed']
|
|
81
|
+
when 'Y'
|
|
82
|
+
'Completed'
|
|
83
|
+
when 'K'
|
|
84
|
+
'Pending'
|
|
85
|
+
else
|
|
86
|
+
'Failed'
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def verify(secret)
|
|
91
|
+
return false if security_key.blank?
|
|
92
|
+
|
|
93
|
+
Digest::MD5.hexdigest("#{secret}#{params['sid']}#{transaction_id}#{gross}").upcase == security_key.upcase
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def acknowledge
|
|
97
|
+
true
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
private
|
|
101
|
+
|
|
102
|
+
def parse(post)
|
|
103
|
+
@raw = post.to_s
|
|
104
|
+
for line in @raw.split('&')
|
|
105
|
+
key, value = *line.scan( %r{^(\w+)\=(.*)$} ).flatten
|
|
106
|
+
params[key] = CGI.unescape(value || '')
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module TwoCheckout
|
|
5
|
+
class Return < ActiveMerchant::Billing::Integrations::Return
|
|
6
|
+
def success?
|
|
7
|
+
params['credit_card_processed'] == 'Y'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def message
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
|
|
4
|
+
class Error < ActiveMerchantError #:nodoc:
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
class Response
|
|
8
|
+
attr_reader :params, :message, :test, :authorization, :avs_result, :cvv_result
|
|
9
|
+
|
|
10
|
+
def success?
|
|
11
|
+
@success
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test?
|
|
15
|
+
@test
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def fraud_review?
|
|
19
|
+
@fraud_review
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def initialize(success, message, params = {}, options = {})
|
|
23
|
+
@success, @message, @params = success, message, params.stringify_keys
|
|
24
|
+
@test = options[:test] || false
|
|
25
|
+
@authorization = options[:authorization]
|
|
26
|
+
@fraud_review = options[:fraud_review]
|
|
27
|
+
@avs_result = AVSResult.new(options[:avs_result]).to_hash
|
|
28
|
+
@cvv_result = CVVResult.new(options[:cvv_result]).to_hash
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
require 'uri'
|
|
2
|
+
require 'net/http'
|
|
3
|
+
require 'net/https'
|
|
4
|
+
require 'benchmark'
|
|
5
|
+
|
|
6
|
+
module ActiveMerchant
|
|
7
|
+
class ConnectionError < ActiveMerchantError # :nodoc:
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class RetriableConnectionError < ConnectionError # :nodoc:
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class ResponseError < ActiveMerchantError # :nodoc:
|
|
14
|
+
attr_reader :response
|
|
15
|
+
|
|
16
|
+
def initialize(response, message = nil)
|
|
17
|
+
@response = response
|
|
18
|
+
@message = message
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def to_s
|
|
22
|
+
"Failed with #{response.code} #{response.message if response.respond_to?(:message)}"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class Connection
|
|
27
|
+
MAX_RETRIES = 3
|
|
28
|
+
OPEN_TIMEOUT = 60
|
|
29
|
+
READ_TIMEOUT = 60
|
|
30
|
+
VERIFY_PEER = true
|
|
31
|
+
RETRY_SAFE = false
|
|
32
|
+
RUBY_184_POST_HEADERS = { "Content-Type" => "application/x-www-form-urlencoded" }
|
|
33
|
+
|
|
34
|
+
attr_accessor :endpoint
|
|
35
|
+
attr_accessor :open_timeout
|
|
36
|
+
attr_accessor :read_timeout
|
|
37
|
+
attr_accessor :verify_peer
|
|
38
|
+
attr_accessor :retry_safe
|
|
39
|
+
attr_accessor :pem
|
|
40
|
+
attr_accessor :pem_password
|
|
41
|
+
attr_accessor :wiredump_device
|
|
42
|
+
attr_accessor :logger
|
|
43
|
+
attr_accessor :tag
|
|
44
|
+
|
|
45
|
+
def initialize(endpoint)
|
|
46
|
+
@endpoint = endpoint.is_a?(URI) ? endpoint : URI.parse(endpoint)
|
|
47
|
+
@open_timeout = OPEN_TIMEOUT
|
|
48
|
+
@read_timeout = READ_TIMEOUT
|
|
49
|
+
@retry_safe = RETRY_SAFE
|
|
50
|
+
@verify_peer = VERIFY_PEER
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def request(method, body, headers = {})
|
|
54
|
+
retry_exceptions do
|
|
55
|
+
begin
|
|
56
|
+
info "#{method.to_s.upcase} #{endpoint}", tag
|
|
57
|
+
|
|
58
|
+
result = nil
|
|
59
|
+
|
|
60
|
+
realtime = Benchmark.realtime do
|
|
61
|
+
result = case method
|
|
62
|
+
when :get
|
|
63
|
+
raise ArgumentError, "GET requests do not support a request body" if body
|
|
64
|
+
http.get(endpoint.request_uri, headers)
|
|
65
|
+
when :post
|
|
66
|
+
debug body
|
|
67
|
+
http.post(endpoint.request_uri, body, RUBY_184_POST_HEADERS.merge(headers))
|
|
68
|
+
else
|
|
69
|
+
raise ArgumentError, "Unsupported request method #{method.to_s.upcase}"
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
info "--> %d %s (%d %.4fs)" % [result.code, result.message, result.body ? result.body.length : 0, realtime], tag
|
|
74
|
+
response = handle_response(result)
|
|
75
|
+
debug response
|
|
76
|
+
response
|
|
77
|
+
rescue EOFError => e
|
|
78
|
+
raise ConnectionError, "The remote server dropped the connection"
|
|
79
|
+
rescue Errno::ECONNRESET => e
|
|
80
|
+
raise ConnectionError, "The remote server reset the connection"
|
|
81
|
+
rescue Errno::ECONNREFUSED => e
|
|
82
|
+
raise RetriableConnectionError, "The remote server refused the connection"
|
|
83
|
+
rescue Timeout::Error, Errno::ETIMEDOUT => e
|
|
84
|
+
raise ConnectionError, "The connection to the remote server timed out"
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
private
|
|
90
|
+
def http
|
|
91
|
+
http = Net::HTTP.new(endpoint.host, endpoint.port)
|
|
92
|
+
configure_debugging(http)
|
|
93
|
+
configure_timeouts(http)
|
|
94
|
+
configure_ssl(http)
|
|
95
|
+
configure_cert(http)
|
|
96
|
+
http
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def configure_debugging(http)
|
|
100
|
+
http.set_debug_output(wiredump_device)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def configure_timeouts(http)
|
|
104
|
+
http.open_timeout = open_timeout
|
|
105
|
+
http.read_timeout = read_timeout
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def configure_ssl(http)
|
|
109
|
+
return unless endpoint.scheme == "https"
|
|
110
|
+
|
|
111
|
+
http.use_ssl = true
|
|
112
|
+
|
|
113
|
+
if verify_peer
|
|
114
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
|
115
|
+
http.ca_file = File.dirname(__FILE__) + '/../../certs/cacert.pem'
|
|
116
|
+
else
|
|
117
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def configure_cert(http)
|
|
122
|
+
return if pem.blank?
|
|
123
|
+
|
|
124
|
+
http.cert = OpenSSL::X509::Certificate.new(pem)
|
|
125
|
+
|
|
126
|
+
if pem_password
|
|
127
|
+
http.key = OpenSSL::PKey::RSA.new(pem, pem_password)
|
|
128
|
+
else
|
|
129
|
+
http.key = OpenSSL::PKey::RSA.new(pem)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def retry_exceptions
|
|
134
|
+
retries = MAX_RETRIES
|
|
135
|
+
begin
|
|
136
|
+
yield
|
|
137
|
+
rescue RetriableConnectionError => e
|
|
138
|
+
retries -= 1
|
|
139
|
+
retry unless retries.zero?
|
|
140
|
+
raise ConnectionError, e.message
|
|
141
|
+
rescue ConnectionError
|
|
142
|
+
retries -= 1
|
|
143
|
+
retry if retry_safe && !retries.zero?
|
|
144
|
+
raise
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def handle_response(response)
|
|
149
|
+
case response.code.to_i
|
|
150
|
+
when 200...300
|
|
151
|
+
response.body
|
|
152
|
+
else
|
|
153
|
+
raise ResponseError.new(response)
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def debug(message, tag = nil)
|
|
158
|
+
log(:debug, message, tag)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def info(message, tag = nil)
|
|
162
|
+
log(:info, message, tag)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def log(level, message, tag)
|
|
166
|
+
message = "[#{tag}] #{message}" if tag
|
|
167
|
+
logger.send(level, message) if logger
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|