stripe 5.55.0 → 13.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +567 -4
- data/Gemfile +12 -4
- data/Makefile +18 -3
- data/OPENAPI_VERSION +1 -0
- data/README.md +93 -21
- data/Rakefile +3 -6
- data/VERSION +1 -1
- data/examples/README.md +16 -0
- data/examples/example_template.rb +36 -0
- data/examples/meter_event_stream.rb +57 -0
- data/examples/thinevent_webhook_handler.rb +39 -0
- data/{bin → exe}/stripe-console +1 -1
- data/justfile +43 -0
- data/lib/data/ca-certificates.crt +1241 -1937
- data/lib/stripe/api_operations/create.rb +6 -2
- data/lib/stripe/api_operations/delete.rb +12 -7
- data/lib/stripe/api_operations/list.rb +6 -9
- data/lib/stripe/api_operations/nested_resource.rb +63 -35
- data/lib/stripe/api_operations/request.rb +29 -65
- data/lib/stripe/api_operations/save.rb +20 -10
- data/lib/stripe/api_operations/search.rb +11 -9
- data/lib/stripe/api_operations/singleton_save.rb +90 -0
- data/lib/stripe/api_requestor.rb +1131 -0
- data/lib/stripe/api_resource.rb +48 -18
- data/lib/stripe/api_resource_test_helpers.rb +9 -3
- data/lib/stripe/api_version.rb +8 -0
- data/lib/stripe/connection_manager.rb +5 -7
- data/lib/stripe/errors.rb +11 -13
- data/lib/stripe/event_types.rb +14 -0
- data/lib/stripe/events/v1_billing_meter_error_report_triggered_event.rb +23 -0
- data/lib/stripe/events/v1_billing_meter_no_meter_found_event.rb +13 -0
- data/lib/stripe/instrumentation.rb +37 -15
- data/lib/stripe/list_object.rb +5 -3
- data/lib/stripe/multipart_encoder.rb +7 -7
- data/lib/stripe/oauth.rb +14 -21
- data/lib/stripe/object_types.rb +151 -103
- data/lib/stripe/request_options.rb +129 -0
- data/lib/stripe/resources/account.rb +129 -25
- data/lib/stripe/resources/account_link.rb +12 -0
- data/lib/stripe/resources/account_session.rb +25 -0
- data/lib/stripe/resources/alipay_account.rb +1 -1
- data/lib/stripe/resources/apple_pay_domain.rb +38 -0
- data/lib/stripe/resources/application_fee.rb +9 -2
- data/lib/stripe/resources/application_fee_refund.rb +9 -2
- data/lib/stripe/resources/apps/secret.rb +55 -0
- data/lib/stripe/resources/balance.rb +14 -0
- data/lib/stripe/resources/balance_transaction.rb +19 -0
- data/lib/stripe/resources/bank_account.rb +53 -4
- data/lib/stripe/resources/billing/alert.rb +87 -0
- data/lib/stripe/resources/billing/credit_balance_summary.rb +14 -0
- data/lib/stripe/resources/billing/credit_balance_transaction.rb +26 -0
- data/lib/stripe/resources/billing/credit_grant.rb +90 -0
- data/lib/stripe/resources/billing/meter.rb +85 -0
- data/lib/stripe/resources/billing/meter_event.rb +26 -0
- data/lib/stripe/resources/billing/meter_event_adjustment.rb +26 -0
- data/lib/stripe/resources/billing/meter_event_summary.rb +17 -0
- data/lib/stripe/resources/billing_portal/configuration.rb +34 -0
- data/lib/stripe/resources/billing_portal/session.rb +27 -0
- data/lib/stripe/resources/capability.rb +7 -2
- data/lib/stripe/resources/card.rb +34 -3
- data/lib/stripe/resources/cash_balance.rb +4 -0
- data/lib/stripe/resources/charge.rb +52 -3
- data/lib/stripe/resources/checkout/session.rb +83 -5
- data/lib/stripe/resources/climate/order.rb +67 -0
- data/lib/stripe/resources/climate/product.rb +27 -0
- data/lib/stripe/resources/climate/supplier.rb +26 -0
- data/lib/stripe/resources/confirmation_token.rb +39 -0
- data/lib/stripe/resources/country_spec.rb +14 -0
- data/lib/stripe/resources/coupon.rb +48 -0
- data/lib/stripe/resources/credit_note.rb +67 -9
- data/lib/stripe/resources/credit_note_line_item.rb +4 -0
- data/lib/stripe/resources/customer.rb +172 -28
- data/lib/stripe/resources/customer_balance_transaction.rb +9 -1
- data/lib/stripe/resources/customer_cash_balance_transaction.rb +15 -0
- data/lib/stripe/resources/customer_session.rb +29 -0
- data/lib/stripe/resources/discount.rb +7 -0
- data/lib/stripe/resources/dispute.rb +41 -3
- data/lib/stripe/resources/entitlements/active_entitlement.rb +26 -0
- data/lib/stripe/resources/entitlements/feature.rb +49 -0
- data/lib/stripe/resources/ephemeral_key.rb +23 -0
- data/lib/stripe/resources/event.rb +38 -0
- data/lib/stripe/resources/exchange_rate.rb +34 -0
- data/lib/stripe/resources/file.rb +37 -15
- data/lib/stripe/resources/file_link.rb +26 -0
- data/lib/stripe/resources/financial_connections/account.rb +101 -6
- data/lib/stripe/resources/financial_connections/account_owner.rb +4 -0
- data/lib/stripe/resources/financial_connections/account_ownership.rb +4 -0
- data/lib/stripe/resources/financial_connections/session.rb +14 -0
- data/lib/stripe/resources/financial_connections/transaction.rb +26 -0
- data/lib/stripe/resources/forwarding/request.rb +52 -0
- data/lib/stripe/resources/funding_instructions.rb +8 -0
- data/lib/stripe/resources/identity/verification_report.rb +24 -0
- data/lib/stripe/resources/identity/verification_session.rb +117 -5
- data/lib/stripe/resources/invoice.rb +247 -20
- data/lib/stripe/resources/invoice_item.rb +54 -0
- data/lib/stripe/resources/invoice_line_item.rb +22 -1
- data/lib/stripe/resources/invoice_rendering_template.rb +65 -0
- data/lib/stripe/resources/issuing/authorization.rb +210 -5
- data/lib/stripe/resources/issuing/card.rb +128 -4
- data/lib/stripe/resources/issuing/cardholder.rb +36 -0
- data/lib/stripe/resources/issuing/dispute.rb +47 -2
- data/lib/stripe/resources/issuing/personalization_design.rb +119 -0
- data/lib/stripe/resources/issuing/physical_bundle.rb +26 -0
- data/lib/stripe/resources/issuing/token.rb +32 -0
- data/lib/stripe/resources/issuing/transaction.rb +79 -0
- data/lib/stripe/resources/line_item.rb +4 -0
- data/lib/stripe/resources/login_link.rb +4 -0
- data/lib/stripe/resources/mandate.rb +4 -0
- data/lib/stripe/resources/payment_intent.rb +238 -15
- data/lib/stripe/resources/payment_link.rb +39 -2
- data/lib/stripe/resources/payment_method.rb +78 -5
- data/lib/stripe/resources/payment_method_configuration.rb +59 -0
- data/lib/stripe/resources/payment_method_domain.rb +79 -0
- data/lib/stripe/resources/payout.rb +63 -5
- data/lib/stripe/resources/person.rb +8 -1
- data/lib/stripe/resources/plan.rb +51 -0
- data/lib/stripe/resources/price.rb +30 -1
- data/lib/stripe/resources/product.rb +55 -1
- data/lib/stripe/resources/product_feature.rb +13 -0
- data/lib/stripe/resources/promotion_code.rb +25 -0
- data/lib/stripe/resources/quote.rb +97 -39
- data/lib/stripe/resources/radar/early_fraud_warning.rb +17 -0
- data/lib/stripe/resources/radar/value_list.rb +56 -0
- data/lib/stripe/resources/radar/value_list_item.rb +46 -0
- data/lib/stripe/resources/refund.rb +70 -5
- data/lib/stripe/resources/reporting/report_run.rb +31 -0
- data/lib/stripe/resources/reporting/report_type.rb +21 -1
- data/lib/stripe/resources/reversal.rb +17 -2
- data/lib/stripe/resources/review.rb +24 -3
- data/lib/stripe/resources/setup_attempt.rb +12 -0
- data/lib/stripe/resources/setup_intent.rb +113 -7
- data/lib/stripe/resources/shipping_rate.rb +25 -0
- data/lib/stripe/resources/sigma/scheduled_query_run.rb +17 -0
- data/lib/stripe/resources/source.rb +52 -10
- data/lib/stripe/resources/source_transaction.rb +7 -0
- data/lib/stripe/resources/subscription.rb +118 -5
- data/lib/stripe/resources/subscription_item.rb +54 -6
- data/lib/stripe/resources/subscription_schedule.rb +60 -5
- data/lib/stripe/resources/tax/calculation.rb +48 -0
- data/lib/stripe/resources/tax/calculation_line_item.rb +13 -0
- data/lib/stripe/resources/tax/registration.rb +54 -0
- data/lib/stripe/resources/tax/settings.rb +17 -0
- data/lib/stripe/resources/tax/transaction.rb +56 -0
- data/lib/stripe/resources/tax/transaction_line_item.rb +13 -0
- data/lib/stripe/resources/tax_code.rb +9 -0
- data/lib/stripe/resources/tax_id.rb +34 -12
- data/lib/stripe/resources/tax_rate.rb +26 -0
- data/lib/stripe/resources/terminal/configuration.rb +54 -0
- data/lib/stripe/resources/terminal/connection_token.rb +16 -0
- data/lib/stripe/resources/terminal/location.rb +57 -0
- data/lib/stripe/resources/terminal/reader.rb +138 -11
- data/lib/stripe/resources/test_helpers/test_clock.rb +58 -3
- data/lib/stripe/resources/token.rb +29 -0
- data/lib/stripe/resources/topup.rb +40 -3
- data/lib/stripe/resources/transfer.rb +29 -6
- data/lib/stripe/resources/treasury/credit_reversal.rb +37 -0
- data/lib/stripe/resources/treasury/debit_reversal.rb +37 -0
- data/lib/stripe/resources/treasury/financial_account.rb +109 -0
- data/lib/stripe/resources/treasury/financial_account_features.rb +15 -0
- data/lib/stripe/resources/treasury/inbound_transfer.rb +130 -0
- data/lib/stripe/resources/treasury/outbound_payment.rb +152 -0
- data/lib/stripe/resources/treasury/outbound_transfer.rb +152 -0
- data/lib/stripe/resources/treasury/received_credit.rb +47 -0
- data/lib/stripe/resources/treasury/received_debit.rb +47 -0
- data/lib/stripe/resources/treasury/transaction.rb +26 -0
- data/lib/stripe/resources/treasury/transaction_entry.rb +30 -0
- data/lib/stripe/resources/usage_record.rb +9 -0
- data/lib/stripe/resources/usage_record_summary.rb +4 -0
- data/lib/stripe/resources/v2/billing/meter_event.rb +16 -0
- data/lib/stripe/resources/v2/billing/meter_event_adjustment.rb +15 -0
- data/lib/stripe/resources/v2/billing/meter_event_session.rb +15 -0
- data/lib/stripe/resources/v2/event.rb +13 -0
- data/lib/stripe/resources/v2/event_destination.rb +13 -0
- data/lib/stripe/resources/webhook_endpoint.rb +55 -0
- data/lib/stripe/resources.rb +51 -10
- data/lib/stripe/search_result_object.rb +5 -2
- data/lib/stripe/services/account_capability_service.rb +39 -0
- data/lib/stripe/services/account_external_account_service.rb +68 -0
- data/lib/stripe/services/account_link_service.rb +17 -0
- data/lib/stripe/services/account_login_link_service.rb +19 -0
- data/lib/stripe/services/account_person_service.rb +61 -0
- data/lib/stripe/services/account_service.rb +100 -0
- data/lib/stripe/services/account_session_service.rb +17 -0
- data/lib/stripe/services/apple_pay_domain_service.rb +50 -0
- data/lib/stripe/services/application_fee_refund_service.rb +60 -0
- data/lib/stripe/services/application_fee_service.rb +35 -0
- data/lib/stripe/services/apps/secret_service.rb +52 -0
- data/lib/stripe/services/apps_service.rb +13 -0
- data/lib/stripe/services/balance_service.rb +12 -0
- data/lib/stripe/services/balance_transaction_service.rb +32 -0
- data/lib/stripe/services/billing/alert_service.rb +74 -0
- data/lib/stripe/services/billing/credit_balance_summary_service.rb +19 -0
- data/lib/stripe/services/billing/credit_balance_transaction_service.rb +30 -0
- data/lib/stripe/services/billing/credit_grant_service.rb +74 -0
- data/lib/stripe/services/billing/meter_event_adjustment_service.rb +19 -0
- data/lib/stripe/services/billing/meter_event_service.rb +19 -0
- data/lib/stripe/services/billing/meter_event_summary_service.rb +19 -0
- data/lib/stripe/services/billing/meter_service.rb +81 -0
- data/lib/stripe/services/billing_portal/configuration_service.rb +52 -0
- data/lib/stripe/services/billing_portal/session_service.rb +19 -0
- data/lib/stripe/services/billing_portal_service.rb +14 -0
- data/lib/stripe/services/billing_service.rb +20 -0
- data/lib/stripe/services/charge_service.rb +69 -0
- data/lib/stripe/services/checkout/session_line_item_service.rb +19 -0
- data/lib/stripe/services/checkout/session_service.rb +72 -0
- data/lib/stripe/services/checkout_service.rb +13 -0
- data/lib/stripe/services/climate/order_service.rb +68 -0
- data/lib/stripe/services/climate/product_service.rb +30 -0
- data/lib/stripe/services/climate/supplier_service.rb +30 -0
- data/lib/stripe/services/climate_service.rb +15 -0
- data/lib/stripe/services/confirmation_token_service.rb +17 -0
- data/lib/stripe/services/country_spec_service.rb +28 -0
- data/lib/stripe/services/coupon_service.rb +51 -0
- data/lib/stripe/services/credit_note_line_item_service.rb +17 -0
- data/lib/stripe/services/credit_note_preview_lines_service.rb +17 -0
- data/lib/stripe/services/credit_note_service.rb +93 -0
- data/lib/stripe/services/customer_balance_transaction_service.rb +50 -0
- data/lib/stripe/services/customer_cash_balance_service.rb +28 -0
- data/lib/stripe/services/customer_cash_balance_transaction_service.rb +28 -0
- data/lib/stripe/services/customer_funding_instructions_service.rb +19 -0
- data/lib/stripe/services/customer_payment_method_service.rb +28 -0
- data/lib/stripe/services/customer_payment_source_service.rb +76 -0
- data/lib/stripe/services/customer_service.rb +89 -0
- data/lib/stripe/services/customer_session_service.rb +17 -0
- data/lib/stripe/services/customer_tax_id_service.rb +50 -0
- data/lib/stripe/services/dispute_service.rb +48 -0
- data/lib/stripe/services/entitlements/active_entitlement_service.rb +30 -0
- data/lib/stripe/services/entitlements/feature_service.rb +52 -0
- data/lib/stripe/services/entitlements_service.rb +14 -0
- data/lib/stripe/services/ephemeral_key_service.rb +28 -0
- data/lib/stripe/services/event_service.rb +22 -0
- data/lib/stripe/services/exchange_rate_service.rb +28 -0
- data/lib/stripe/services/file_link_service.rb +38 -0
- data/lib/stripe/services/file_service.rb +35 -0
- data/lib/stripe/services/financial_connections/account_owner_service.rb +19 -0
- data/lib/stripe/services/financial_connections/account_service.rb +81 -0
- data/lib/stripe/services/financial_connections/session_service.rb +30 -0
- data/lib/stripe/services/financial_connections/transaction_service.rb +30 -0
- data/lib/stripe/services/financial_connections_service.rb +15 -0
- data/lib/stripe/services/forwarding/request_service.rb +41 -0
- data/lib/stripe/services/forwarding_service.rb +13 -0
- data/lib/stripe/services/identity/verification_report_service.rb +30 -0
- data/lib/stripe/services/identity/verification_session_service.rb +106 -0
- data/lib/stripe/services/identity_service.rb +14 -0
- data/lib/stripe/services/invoice_item_service.rb +61 -0
- data/lib/stripe/services/invoice_line_item_service.rb +31 -0
- data/lib/stripe/services/invoice_rendering_template_service.rb +50 -0
- data/lib/stripe/services/invoice_service.rb +202 -0
- data/lib/stripe/services/invoice_upcoming_lines_service.rb +17 -0
- data/lib/stripe/services/issuing/authorization_service.rb +65 -0
- data/lib/stripe/services/issuing/card_service.rb +52 -0
- data/lib/stripe/services/issuing/cardholder_service.rb +52 -0
- data/lib/stripe/services/issuing/dispute_service.rb +63 -0
- data/lib/stripe/services/issuing/personalization_design_service.rb +52 -0
- data/lib/stripe/services/issuing/physical_bundle_service.rb +30 -0
- data/lib/stripe/services/issuing/token_service.rb +41 -0
- data/lib/stripe/services/issuing/transaction_service.rb +41 -0
- data/lib/stripe/services/issuing_service.rb +20 -0
- data/lib/stripe/services/mandate_service.rb +17 -0
- data/lib/stripe/services/oauth_service.rb +63 -0
- data/lib/stripe/services/payment_intent_service.rb +204 -0
- data/lib/stripe/services/payment_link_line_item_service.rb +17 -0
- data/lib/stripe/services/payment_link_service.rb +57 -0
- data/lib/stripe/services/payment_method_configuration_service.rb +50 -0
- data/lib/stripe/services/payment_method_domain_service.rb +66 -0
- data/lib/stripe/services/payment_method_service.rb +86 -0
- data/lib/stripe/services/payout_service.rb +66 -0
- data/lib/stripe/services/plan_service.rb +49 -0
- data/lib/stripe/services/price_service.rb +52 -0
- data/lib/stripe/services/product_feature_service.rb +50 -0
- data/lib/stripe/services/product_service.rb +70 -0
- data/lib/stripe/services/promotion_code_service.rb +50 -0
- data/lib/stripe/services/quote_computed_upfront_line_items_service.rb +17 -0
- data/lib/stripe/services/quote_line_item_service.rb +17 -0
- data/lib/stripe/services/quote_service.rb +92 -0
- data/lib/stripe/services/radar/early_fraud_warning_service.rb +32 -0
- data/lib/stripe/services/radar/value_list_item_service.rb +52 -0
- data/lib/stripe/services/radar/value_list_service.rb +63 -0
- data/lib/stripe/services/radar_service.rb +15 -0
- data/lib/stripe/services/refund_service.rb +63 -0
- data/lib/stripe/services/reporting/report_run_service.rb +41 -0
- data/lib/stripe/services/reporting/report_type_service.rb +30 -0
- data/lib/stripe/services/reporting_service.rb +14 -0
- data/lib/stripe/services/review_service.rb +33 -0
- data/lib/stripe/services/setup_attempt_service.rb +17 -0
- data/lib/stripe/services/setup_intent_service.rb +105 -0
- data/lib/stripe/services/shipping_rate_service.rb +50 -0
- data/lib/stripe/services/sigma/scheduled_query_run_service.rb +30 -0
- data/lib/stripe/services/sigma_service.rb +13 -0
- data/lib/stripe/services/source_service.rb +64 -0
- data/lib/stripe/services/source_transaction_service.rb +17 -0
- data/lib/stripe/services/subscription_item_service.rb +69 -0
- data/lib/stripe/services/subscription_item_usage_record_service.rb +23 -0
- data/lib/stripe/services/subscription_item_usage_record_summary_service.rb +19 -0
- data/lib/stripe/services/subscription_schedule_service.rb +72 -0
- data/lib/stripe/services/subscription_service.rb +127 -0
- data/lib/stripe/services/tax/calculation_line_item_service.rb +19 -0
- data/lib/stripe/services/tax/calculation_service.rb +37 -0
- data/lib/stripe/services/tax/registration_service.rb +54 -0
- data/lib/stripe/services/tax/settings_service.rb +30 -0
- data/lib/stripe/services/tax/transaction_line_item_service.rb +19 -0
- data/lib/stripe/services/tax/transaction_service.rb +48 -0
- data/lib/stripe/services/tax_code_service.rb +22 -0
- data/lib/stripe/services/tax_id_service.rb +38 -0
- data/lib/stripe/services/tax_rate_service.rb +38 -0
- data/lib/stripe/services/tax_service.rb +16 -0
- data/lib/stripe/services/terminal/configuration_service.rb +63 -0
- data/lib/stripe/services/terminal/connection_token_service.rb +19 -0
- data/lib/stripe/services/terminal/location_service.rb +64 -0
- data/lib/stripe/services/terminal/reader_service.rb +118 -0
- data/lib/stripe/services/terminal_service.rb +16 -0
- data/lib/stripe/services/test_helpers/confirmation_token_service.rb +19 -0
- data/lib/stripe/services/test_helpers/customer_service.rb +19 -0
- data/lib/stripe/services/test_helpers/issuing/authorization_service.rb +87 -0
- data/lib/stripe/services/test_helpers/issuing/card_service.rb +65 -0
- data/lib/stripe/services/test_helpers/issuing/personalization_design_service.rb +43 -0
- data/lib/stripe/services/test_helpers/issuing/transaction_service.rb +43 -0
- data/lib/stripe/services/test_helpers/issuing_service.rb +19 -0
- data/lib/stripe/services/test_helpers/refund_service.rb +19 -0
- data/lib/stripe/services/test_helpers/terminal/reader_service.rb +21 -0
- data/lib/stripe/services/test_helpers/terminal_service.rb +15 -0
- data/lib/stripe/services/test_helpers/test_clock_service.rb +63 -0
- data/lib/stripe/services/test_helpers/treasury/inbound_transfer_service.rb +43 -0
- data/lib/stripe/services/test_helpers/treasury/outbound_payment_service.rb +54 -0
- data/lib/stripe/services/test_helpers/treasury/outbound_transfer_service.rb +54 -0
- data/lib/stripe/services/test_helpers/treasury/received_credit_service.rb +21 -0
- data/lib/stripe/services/test_helpers/treasury/received_debit_service.rb +21 -0
- data/lib/stripe/services/test_helpers/treasury_service.rb +19 -0
- data/lib/stripe/services/test_helpers_service.rb +19 -0
- data/lib/stripe/services/token_service.rb +23 -0
- data/lib/stripe/services/topup_service.rb +49 -0
- data/lib/stripe/services/transfer_reversal_service.rb +56 -0
- data/lib/stripe/services/transfer_service.rb +47 -0
- data/lib/stripe/services/treasury/credit_reversal_service.rb +41 -0
- data/lib/stripe/services/treasury/debit_reversal_service.rb +41 -0
- data/lib/stripe/services/treasury/financial_account_features_service.rb +30 -0
- data/lib/stripe/services/treasury/financial_account_service.rb +70 -0
- data/lib/stripe/services/treasury/inbound_transfer_service.rb +52 -0
- data/lib/stripe/services/treasury/outbound_payment_service.rb +52 -0
- data/lib/stripe/services/treasury/outbound_transfer_service.rb +52 -0
- data/lib/stripe/services/treasury/received_credit_service.rb +30 -0
- data/lib/stripe/services/treasury/received_debit_service.rb +30 -0
- data/lib/stripe/services/treasury/transaction_entry_service.rb +30 -0
- data/lib/stripe/services/treasury/transaction_service.rb +30 -0
- data/lib/stripe/services/treasury_service.rb +22 -0
- data/lib/stripe/services/v1_services.rb +89 -0
- data/lib/stripe/services/v2/billing/meter_event_adjustment_service.rb +21 -0
- data/lib/stripe/services/v2/billing/meter_event_service.rb +21 -0
- data/lib/stripe/services/v2/billing/meter_event_session_service.rb +21 -0
- data/lib/stripe/services/v2/billing/meter_event_stream_service.rb +23 -0
- data/lib/stripe/services/v2/billing_service.rb +18 -0
- data/lib/stripe/services/v2/core/event_destination_service.rb +98 -0
- data/lib/stripe/services/v2/core/event_service.rb +32 -0
- data/lib/stripe/services/v2/core_service.rb +16 -0
- data/lib/stripe/services/v2_services.rb +14 -0
- data/lib/stripe/services/webhook_endpoint_service.rb +61 -0
- data/lib/stripe/services.rb +182 -0
- data/lib/stripe/singleton_api_resource.rb +3 -3
- data/lib/stripe/stripe_client.rb +55 -1028
- data/lib/stripe/stripe_configuration.rb +63 -42
- data/lib/stripe/stripe_object.rb +60 -38
- data/lib/stripe/stripe_response.rb +1 -3
- data/lib/stripe/stripe_service.rb +32 -0
- data/lib/stripe/thin_event.rb +37 -0
- data/lib/stripe/util.rb +109 -45
- data/lib/stripe/v2_list_object.rb +84 -0
- data/lib/stripe/version.rb +1 -1
- data/lib/stripe/webhook.rb +3 -2
- data/lib/stripe.rb +39 -0
- data/stripe.gemspec +7 -4
- metadata +252 -13
- data/lib/stripe/resources/bitcoin_receiver.rb +0 -24
- data/lib/stripe/resources/bitcoin_transaction.rb +0 -16
- data/lib/stripe/resources/issuing/card_details.rb +0 -10
- data/lib/stripe/resources/order.rb +0 -33
- data/lib/stripe/resources/order_return.rb +0 -10
- data/lib/stripe/resources/recipient.rb +0 -14
- data/lib/stripe/resources/sku.rb +0 -13
- data/lib/stripe/resources/three_d_secure.rb +0 -14
@@ -25,26 +25,11 @@ module Stripe
|
|
25
25
|
# If `.logger` is set, the value of `.log_level` is ignored. The decision on
|
26
26
|
# what levels to print is entirely deferred to the logger.
|
27
27
|
class StripeConfiguration
|
28
|
-
attr_accessor :api_key
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
attr_accessor :stripe_account
|
34
|
-
|
35
|
-
attr_reader :api_base
|
36
|
-
attr_reader :uploads_base
|
37
|
-
attr_reader :connect_base
|
38
|
-
attr_reader :ca_bundle_path
|
39
|
-
attr_reader :log_level
|
40
|
-
attr_reader :initial_network_retry_delay
|
41
|
-
attr_reader :max_network_retries
|
42
|
-
attr_reader :max_network_retry_delay
|
43
|
-
attr_reader :open_timeout
|
44
|
-
attr_reader :read_timeout
|
45
|
-
attr_reader :write_timeout
|
46
|
-
attr_reader :proxy
|
47
|
-
attr_reader :verify_ssl_certs
|
28
|
+
attr_accessor :api_key, :api_version, :client_id, :enable_telemetry, :logger, :stripe_account, :stripe_context
|
29
|
+
|
30
|
+
attr_reader :api_base, :uploads_base, :connect_base, :meter_events_base, :base_addresses, :ca_bundle_path,
|
31
|
+
:log_level, :initial_network_retry_delay, :max_network_retries, :max_network_retry_delay,
|
32
|
+
:open_timeout, :read_timeout, :write_timeout, :proxy, :verify_ssl_certs
|
48
33
|
|
49
34
|
def self.setup
|
50
35
|
new.tap do |instance|
|
@@ -52,6 +37,25 @@ module Stripe
|
|
52
37
|
end
|
53
38
|
end
|
54
39
|
|
40
|
+
# Set options to the StripeClient configured options, if valid as a client option and provided
|
41
|
+
# Otherwise, for user configurable global options, set them to the global configuration
|
42
|
+
# For all other options, set them to the StripeConfiguration default value
|
43
|
+
def self.client_init(config_opts)
|
44
|
+
global_config = Stripe.config
|
45
|
+
imported_options = USER_CONFIGURABLE_GLOBAL_OPTIONS - StripeClient::CLIENT_OPTIONS
|
46
|
+
client_config = StripeConfiguration.setup do |instance|
|
47
|
+
imported_options.each do |key|
|
48
|
+
begin
|
49
|
+
instance.public_send("#{key}=", global_config.public_send(key)) if global_config.respond_to?(key)
|
50
|
+
rescue NotImplementedError => e
|
51
|
+
# In Ruby <= 2.5, we can't set write_timeout on Net::HTTP, log an error and continue
|
52
|
+
Util.log_error("Failed to set #{key} on client configuration: #{e}")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
client_config.reverse_duplicate_merge(config_opts)
|
57
|
+
end
|
58
|
+
|
55
59
|
# Create a new config based off an existing one. This is useful when the
|
56
60
|
# caller wants to override the global configuration
|
57
61
|
def reverse_duplicate_merge(hash)
|
@@ -59,25 +63,32 @@ module Stripe
|
|
59
63
|
hash.each do |option, value|
|
60
64
|
instance.public_send("#{option}=", value)
|
61
65
|
end
|
66
|
+
instance.send("instance_variable_set", "@base_addresses",
|
67
|
+
{ api: instance.api_base, connect: instance.connect_base,
|
68
|
+
files: instance.uploads_base, meter_events: instance.meter_events_base, })
|
62
69
|
end
|
63
70
|
end
|
64
71
|
|
65
72
|
def initialize
|
73
|
+
@api_version = ApiVersion::CURRENT
|
66
74
|
@ca_bundle_path = Stripe::DEFAULT_CA_BUNDLE_PATH
|
67
75
|
@enable_telemetry = true
|
68
76
|
@verify_ssl_certs = true
|
69
77
|
|
70
|
-
@max_network_retries =
|
78
|
+
@max_network_retries = 2
|
71
79
|
@initial_network_retry_delay = 0.5
|
72
|
-
@max_network_retry_delay =
|
80
|
+
@max_network_retry_delay = 5
|
73
81
|
|
74
82
|
@open_timeout = 30
|
75
83
|
@read_timeout = 80
|
76
84
|
@write_timeout = 30
|
77
85
|
|
78
|
-
@api_base =
|
79
|
-
@connect_base =
|
80
|
-
@uploads_base =
|
86
|
+
@api_base = DEFAULT_API_BASE
|
87
|
+
@connect_base = DEFAULT_CONNECT_BASE
|
88
|
+
@uploads_base = DEFAULT_UPLOAD_BASE
|
89
|
+
@meter_events_base = DEFAULT_METER_EVENTS_BASE
|
90
|
+
@base_addresses = { api: @api_base, connect: @connect_base, files: @uploads_base,
|
91
|
+
meter_events: @meter_events_base, }
|
81
92
|
end
|
82
93
|
|
83
94
|
def log_level=(val)
|
@@ -86,13 +97,16 @@ module Stripe
|
|
86
97
|
val = Stripe::LEVEL_DEBUG
|
87
98
|
elsif val == "info"
|
88
99
|
val = Stripe::LEVEL_INFO
|
100
|
+
elsif val == "error"
|
101
|
+
val = Stripe::LEVEL_ERROR
|
89
102
|
end
|
90
103
|
|
91
104
|
levels = [Stripe::LEVEL_INFO, Stripe::LEVEL_DEBUG, Stripe::LEVEL_ERROR]
|
92
105
|
|
93
106
|
if !val.nil? && !levels.include?(val)
|
94
107
|
raise ArgumentError,
|
95
|
-
"log_level should only be set to `nil`, `debug
|
108
|
+
"log_level should only be set to `nil`, `debug`, `info`, " \
|
109
|
+
"or `error`"
|
96
110
|
end
|
97
111
|
@log_level = val
|
98
112
|
end
|
@@ -111,46 +125,53 @@ module Stripe
|
|
111
125
|
|
112
126
|
def open_timeout=(open_timeout)
|
113
127
|
@open_timeout = open_timeout
|
114
|
-
|
128
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
115
129
|
end
|
116
130
|
|
117
131
|
def read_timeout=(read_timeout)
|
118
132
|
@read_timeout = read_timeout
|
119
|
-
|
133
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
120
134
|
end
|
121
135
|
|
122
136
|
def write_timeout=(write_timeout)
|
123
|
-
unless Net::HTTP.instance_methods.include?(:write_timeout=)
|
124
|
-
raise NotImplementedError
|
125
|
-
end
|
137
|
+
raise NotImplementedError unless Net::HTTP.instance_methods.include?(:write_timeout=)
|
126
138
|
|
127
139
|
@write_timeout = write_timeout
|
128
|
-
|
140
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
129
141
|
end
|
130
142
|
|
131
143
|
def proxy=(proxy)
|
132
144
|
@proxy = proxy
|
133
|
-
|
145
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
134
146
|
end
|
135
147
|
|
136
148
|
def verify_ssl_certs=(verify_ssl_certs)
|
137
149
|
@verify_ssl_certs = verify_ssl_certs
|
138
|
-
|
150
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
151
|
+
end
|
152
|
+
|
153
|
+
def meter_events_base=(meter_events_base)
|
154
|
+
@meter_events_base = meter_events_base
|
155
|
+
@base_addresses[:meter_events] = meter_events_base
|
156
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
139
157
|
end
|
140
158
|
|
141
159
|
def uploads_base=(uploads_base)
|
142
160
|
@uploads_base = uploads_base
|
143
|
-
|
161
|
+
@base_addresses[:files] = uploads_base
|
162
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
144
163
|
end
|
145
164
|
|
146
165
|
def connect_base=(connect_base)
|
147
166
|
@connect_base = connect_base
|
148
|
-
|
167
|
+
@base_addresses[:connect] = connect_base
|
168
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
149
169
|
end
|
150
170
|
|
151
171
|
def api_base=(api_base)
|
152
172
|
@api_base = api_base
|
153
|
-
|
173
|
+
@base_addresses[:api] = api_base
|
174
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
154
175
|
end
|
155
176
|
|
156
177
|
def ca_bundle_path=(path)
|
@@ -159,7 +180,7 @@ module Stripe
|
|
159
180
|
# empty this field so a new store is initialized
|
160
181
|
@ca_store = nil
|
161
182
|
|
162
|
-
|
183
|
+
APIRequestor.clear_all_connection_managers(config: self)
|
163
184
|
end
|
164
185
|
|
165
186
|
# A certificate store initialized from the the bundle in #ca_bundle_path and
|
@@ -173,10 +194,10 @@ module Stripe
|
|
173
194
|
# and is itself not thread safe.
|
174
195
|
def ca_store
|
175
196
|
@ca_store ||= begin
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
197
|
+
store = OpenSSL::X509::Store.new
|
198
|
+
store.add_file(ca_bundle_path)
|
199
|
+
store
|
200
|
+
end
|
180
201
|
end
|
181
202
|
|
182
203
|
def enable_telemetry?
|
data/lib/stripe/stripe_object.rb
CHANGED
@@ -4,6 +4,8 @@ module Stripe
|
|
4
4
|
class StripeObject
|
5
5
|
include Enumerable
|
6
6
|
|
7
|
+
attr_reader :last_response
|
8
|
+
|
7
9
|
@@permanent_attributes = Set.new([:id]) # rubocop:disable Style/ClassVars
|
8
10
|
|
9
11
|
# The default :id method is deprecated and isn't useful to us
|
@@ -70,7 +72,8 @@ module Stripe
|
|
70
72
|
@additive_params.include?(name)
|
71
73
|
end
|
72
74
|
|
73
|
-
def initialize(id = nil, opts = {})
|
75
|
+
def initialize(id = nil, opts = {}, api_mode = :v1, requestor = nil)
|
76
|
+
@api_mode = api_mode
|
74
77
|
id, @retrieve_params = Util.normalize_id(id)
|
75
78
|
@opts = Util.normalize_opts(opts)
|
76
79
|
@original_values = {}
|
@@ -80,13 +83,15 @@ module Stripe
|
|
80
83
|
@unsaved_values = Set.new
|
81
84
|
@transient_values = Set.new
|
82
85
|
@values[:id] = id if id
|
86
|
+
@last_response = nil
|
87
|
+
@requestor = requestor || APIRequestor.active_requestor
|
83
88
|
end
|
84
89
|
|
85
|
-
def self.construct_from(values, opts = {})
|
90
|
+
def self.construct_from(values, opts = {}, last_response = nil, api_mode = :v1, requestor = nil)
|
86
91
|
values = Stripe::Util.symbolize_names(values)
|
87
92
|
|
88
93
|
# work around protected #initialize_from for now
|
89
|
-
new(values[:id]).send(:initialize_from, values, opts)
|
94
|
+
new(values[:id]).send(:initialize_from, values, opts, last_response, api_mode: api_mode, requestor: requestor)
|
90
95
|
end
|
91
96
|
|
92
97
|
# Determines the equality of two Stripe objects. Stripe objects are
|
@@ -148,7 +153,7 @@ module Stripe
|
|
148
153
|
def update_attributes(values, opts = {}, dirty: true)
|
149
154
|
values.each do |k, v|
|
150
155
|
add_accessors([k], values) unless metaclass.method_defined?(k.to_sym)
|
151
|
-
@values[k] = Util.convert_to_stripe_object(v, opts)
|
156
|
+
@values[k] = Util.convert_to_stripe_object(v, opts, api_mode: @api_mode, requestor: @requestor)
|
152
157
|
dirty_value!(@values[k]) if dirty
|
153
158
|
@unsaved_values.add(k)
|
154
159
|
end
|
@@ -217,20 +222,22 @@ module Stripe
|
|
217
222
|
# This allows us to remove certain features that cannot or should not be
|
218
223
|
# serialized.
|
219
224
|
def marshal_dump
|
220
|
-
# The
|
225
|
+
# The APIRequestor instance in @opts is not serializable and is not
|
221
226
|
# really a property of the StripeObject, so we exclude it when
|
222
227
|
# dumping
|
223
228
|
opts = @opts.clone
|
229
|
+
|
230
|
+
# TODO: (major) Remove the :client option. This is not explicitly supported as a user-specified option.
|
224
231
|
opts.delete(:client)
|
225
232
|
[@values, opts]
|
226
233
|
end
|
227
234
|
|
228
235
|
# Implements custom decoding for Ruby's Marshal. Consumes data that's
|
229
236
|
# produced by #marshal_dump.
|
230
|
-
def marshal_load(data)
|
237
|
+
def marshal_load(data, api_mode: :v1)
|
231
238
|
values, opts = data
|
232
|
-
initialize(values[:id])
|
233
|
-
initialize_from(values, opts)
|
239
|
+
initialize(values[:id], api_mode: api_mode)
|
240
|
+
initialize_from(values, opts, api_mode: api_mode, requestor: @requestor)
|
234
241
|
end
|
235
242
|
|
236
243
|
def serialize_params(options = {})
|
@@ -320,8 +327,8 @@ module Stripe
|
|
320
327
|
# Here we swallow that error and issue a warning so at least
|
321
328
|
# the program doesn't crash.
|
322
329
|
warn("WARNING: Unable to remove method `#{method_name}`; " \
|
323
|
-
|
324
|
-
|
330
|
+
"if custom, please consider renaming to a name that doesn't " \
|
331
|
+
"collide with an API property name.")
|
325
332
|
end
|
326
333
|
end
|
327
334
|
end
|
@@ -351,17 +358,15 @@ module Stripe
|
|
351
358
|
define_method(:"#{k}=") do |v|
|
352
359
|
if v == ""
|
353
360
|
raise ArgumentError, "You cannot set #{k} to an empty string. " \
|
354
|
-
|
355
|
-
|
361
|
+
"We interpret empty strings as nil in requests. " \
|
362
|
+
"You may set (object).#{k} = nil to delete the property."
|
356
363
|
end
|
357
|
-
@values[k] = Util.convert_to_stripe_object(v, @opts)
|
364
|
+
@values[k] = Util.convert_to_stripe_object(v, @opts, api_mode: @api_mode, requestor: @requestor)
|
358
365
|
dirty_value!(@values[k])
|
359
366
|
@unsaved_values.add(k)
|
360
367
|
end
|
361
368
|
|
362
|
-
if [FalseClass, TrueClass].include?(values[k].class)
|
363
|
-
define_method(:"#{k}?") { @values[k] }
|
364
|
-
end
|
369
|
+
define_method(:"#{k}?") { @values[k] } if [FalseClass, TrueClass].include?(values[k].class)
|
365
370
|
end
|
366
371
|
end
|
367
372
|
end
|
@@ -369,7 +374,6 @@ module Stripe
|
|
369
374
|
# Disabling the cop because it's confused by the fact that the methods are
|
370
375
|
# protected, but we do define `#respond_to_missing?` just below. Hopefully
|
371
376
|
# this is fixed in more recent Rubocop versions.
|
372
|
-
# rubocop:disable Style/MissingRespondToMissing
|
373
377
|
protected def method_missing(name, *args)
|
374
378
|
# TODO: only allow setting in updateable classes.
|
375
379
|
if name.to_s.end_with?("=")
|
@@ -405,16 +409,14 @@ module Stripe
|
|
405
409
|
|
406
410
|
raise NoMethodError,
|
407
411
|
e.message + ". HINT: The '#{name}' attribute was set in the " \
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
+
"past, however. It was then wiped when refreshing the object " \
|
413
|
+
"with the result returned by Stripe's API, probably as a " \
|
414
|
+
"result of a save(). The attributes currently available on " \
|
415
|
+
"this object are: #{@values.keys.join(', ')}"
|
412
416
|
end
|
413
417
|
end
|
414
|
-
# rubocop:enable Style/MissingRespondToMissing
|
415
|
-
|
416
418
|
protected def respond_to_missing?(symbol, include_private = false)
|
417
|
-
@values && @values.key?(symbol) || super
|
419
|
+
(@values && @values.key?(symbol)) || super
|
418
420
|
end
|
419
421
|
|
420
422
|
# Re-initializes the object based on a hash of values (usually one that's
|
@@ -429,13 +431,17 @@ module Stripe
|
|
429
431
|
# * +:opts:+ Options for StripeObject like an API key.
|
430
432
|
# * +:partial:+ Indicates that the re-initialization should not attempt to
|
431
433
|
# remove accessors.
|
432
|
-
protected def initialize_from(values, opts,
|
434
|
+
protected def initialize_from(values, opts, last_response = nil, api_mode:, requestor: nil)
|
435
|
+
@api_mode = api_mode
|
436
|
+
@last_response = last_response
|
437
|
+
@requestor = requestor
|
438
|
+
|
433
439
|
@opts = Util.normalize_opts(opts)
|
434
440
|
|
435
441
|
# the `#send` is here so that we can keep this method private
|
436
|
-
@original_values = self.class.send(:deep_copy, values)
|
442
|
+
@original_values = self.class.send(:deep_copy, values, api_mode: api_mode)
|
437
443
|
|
438
|
-
removed =
|
444
|
+
removed = Set.new(@values.keys - values.keys)
|
439
445
|
added = Set.new(values.keys - @values.keys)
|
440
446
|
|
441
447
|
# Wipe old state before setting new. This is useful for e.g. updating a
|
@@ -460,7 +466,21 @@ module Stripe
|
|
460
466
|
self
|
461
467
|
end
|
462
468
|
|
463
|
-
|
469
|
+
# Should only be for v2 events and lists, for now.
|
470
|
+
protected def _request(method:, path:, base_address:, params: {}, opts: {})
|
471
|
+
req_opts = RequestOptions.extract_opts_from_hash(opts)
|
472
|
+
req_opts = RequestOptions.combine_opts(@opts, req_opts)
|
473
|
+
@requestor.execute_request(
|
474
|
+
method,
|
475
|
+
path,
|
476
|
+
base_address,
|
477
|
+
params: params,
|
478
|
+
opts: req_opts
|
479
|
+
)
|
480
|
+
end
|
481
|
+
|
482
|
+
# rubocop:todo Metrics/PerceivedComplexity
|
483
|
+
protected def serialize_params_value(value, original, unsaved, force, # rubocop:todo Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
464
484
|
key: nil)
|
465
485
|
if value.nil?
|
466
486
|
""
|
@@ -494,8 +514,8 @@ module Stripe
|
|
494
514
|
value
|
495
515
|
else
|
496
516
|
raise ArgumentError, "Cannot save property `#{key}` containing " \
|
497
|
-
|
498
|
-
|
517
|
+
"an API resource. It doesn't appear to be persisted and is " \
|
518
|
+
"not marked as `save_with_parent`."
|
499
519
|
end
|
500
520
|
|
501
521
|
elsif value.is_a?(Array)
|
@@ -515,7 +535,7 @@ module Stripe
|
|
515
535
|
# example by appending a new hash onto `additional_owners` for an
|
516
536
|
# account.
|
517
537
|
elsif value.is_a?(Hash)
|
518
|
-
Util.convert_to_stripe_object(value, @opts).serialize_params
|
538
|
+
Util.convert_to_stripe_object(value, @opts, api_mode: @api_mode, requestor: @requestor).serialize_params
|
519
539
|
|
520
540
|
elsif value.is_a?(StripeObject)
|
521
541
|
update = value.serialize_params(force: force)
|
@@ -535,24 +555,26 @@ module Stripe
|
|
535
555
|
value
|
536
556
|
end
|
537
557
|
end
|
558
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
538
559
|
|
539
560
|
# Produces a deep copy of the given object including support for arrays,
|
540
561
|
# hashes, and StripeObjects.
|
541
|
-
private_class_method def self.deep_copy(obj)
|
562
|
+
private_class_method def self.deep_copy(obj, api_mode:)
|
542
563
|
case obj
|
543
564
|
when Array
|
544
|
-
obj.map { |e| deep_copy(e) }
|
565
|
+
obj.map { |e| deep_copy(e, api_mode: api_mode) }
|
545
566
|
when Hash
|
546
567
|
obj.each_with_object({}) do |(k, v), copy|
|
547
|
-
copy[k] = deep_copy(v)
|
568
|
+
copy[k] = deep_copy(v, api_mode: api_mode)
|
548
569
|
copy
|
549
570
|
end
|
550
571
|
when StripeObject
|
551
572
|
obj.class.construct_from(
|
552
|
-
deep_copy(obj.instance_variable_get(:@values)),
|
553
|
-
obj.instance_variable_get(:@opts)
|
554
|
-
|
555
|
-
|
573
|
+
deep_copy(obj.instance_variable_get(:@values), api_mode: api_mode),
|
574
|
+
RequestOptions.copyable(obj.instance_variable_get(:@opts)),
|
575
|
+
nil,
|
576
|
+
api_mode,
|
577
|
+
obj.instance_variable_get(:@requestor)
|
556
578
|
)
|
557
579
|
else
|
558
580
|
obj
|
@@ -41,9 +41,7 @@ module Stripe
|
|
41
41
|
|
42
42
|
def [](name)
|
43
43
|
values = @hash[name.downcase]
|
44
|
-
if values && values.count > 1
|
45
|
-
warn("Duplicate header values for `#{name}`; returning only first")
|
46
|
-
end
|
44
|
+
warn("Duplicate header values for `#{name}`; returning only first") if values && values.count > 1
|
47
45
|
values ? values.first : nil
|
48
46
|
end
|
49
47
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# typed: true
|
3
|
+
|
4
|
+
module Stripe
|
5
|
+
class StripeService
|
6
|
+
# Initializes a new StripeService
|
7
|
+
def initialize(requestor)
|
8
|
+
@requestor = requestor
|
9
|
+
end
|
10
|
+
|
11
|
+
def request(method:, path:, base_address:, params: {}, opts: {})
|
12
|
+
@requestor.execute_request(
|
13
|
+
method,
|
14
|
+
path,
|
15
|
+
base_address,
|
16
|
+
params: params,
|
17
|
+
opts: RequestOptions.extract_opts_from_hash(opts)
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
def request_stream(method:, path:, base_address:, params: {}, opts: {}, &read_body_chunk_block)
|
22
|
+
@requestor.execute_request_stream(
|
23
|
+
method,
|
24
|
+
path,
|
25
|
+
base_address,
|
26
|
+
params: params,
|
27
|
+
opts: RequestOptions.extract_opts_from_hash(opts),
|
28
|
+
&read_body_chunk_block
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stripe
|
4
|
+
class EventReasonRequest
|
5
|
+
attr_reader :id, :idempotency_key
|
6
|
+
|
7
|
+
def initialize(event_reason_request_payload = {})
|
8
|
+
@id = event_reason_request_payload[:id]
|
9
|
+
@idempotency_key = event_reason_request_payload[:idempotency_key]
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class EventReason
|
14
|
+
attr_reader :type, :request
|
15
|
+
|
16
|
+
def initialize(event_reason_payload = {})
|
17
|
+
@type = event_reason_payload[:type]
|
18
|
+
@request = EventReasonRequest.new(event_reason_payload[:request])
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class ThinEvent
|
23
|
+
attr_reader :id, :type, :created, :context, :related_object, :livemode, :reason
|
24
|
+
|
25
|
+
def initialize(event_payload = {})
|
26
|
+
@id = event_payload[:id]
|
27
|
+
@type = event_payload[:type]
|
28
|
+
@created = event_payload[:created]
|
29
|
+
@context = event_payload[:context]
|
30
|
+
@livemode = event_payload[:livemode]
|
31
|
+
@related_object = event_payload[:related_object]
|
32
|
+
return if event_payload[:reason].nil?
|
33
|
+
|
34
|
+
@reason = EventReason.new(event_payload[:reason])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|