dodopayments 0.0.1.pre.alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +154 -0
- data/lib/dodopayments/base_client.rb +453 -0
- data/lib/dodopayments/base_model.rb +1217 -0
- data/lib/dodopayments/base_page.rb +62 -0
- data/lib/dodopayments/client.rb +147 -0
- data/lib/dodopayments/default_page_number_pagination.rb +97 -0
- data/lib/dodopayments/errors.rb +183 -0
- data/lib/dodopayments/extern.rb +9 -0
- data/lib/dodopayments/models/attach_existing_customer.rb +19 -0
- data/lib/dodopayments/models/billing_address.rb +48 -0
- data/lib/dodopayments/models/country_code.rb +262 -0
- data/lib/dodopayments/models/create_new_customer.rb +44 -0
- data/lib/dodopayments/models/customer.rb +49 -0
- data/lib/dodopayments/models/customer_create_params.rb +36 -0
- data/lib/dodopayments/models/customer_limited_details.rb +34 -0
- data/lib/dodopayments/models/customer_list_params.rb +32 -0
- data/lib/dodopayments/models/customer_portal_session.rb +19 -0
- data/lib/dodopayments/models/customer_request.rb +18 -0
- data/lib/dodopayments/models/customer_retrieve_params.rb +18 -0
- data/lib/dodopayments/models/customer_update_params.rb +30 -0
- data/lib/dodopayments/models/customers/customer_portal_create_params.rb +27 -0
- data/lib/dodopayments/models/discount.rb +108 -0
- data/lib/dodopayments/models/discount_create_params.rb +87 -0
- data/lib/dodopayments/models/discount_delete_params.rb +18 -0
- data/lib/dodopayments/models/discount_list_params.rb +32 -0
- data/lib/dodopayments/models/discount_retrieve_params.rb +18 -0
- data/lib/dodopayments/models/discount_type.rb +12 -0
- data/lib/dodopayments/models/discount_update_params.rb +82 -0
- data/lib/dodopayments/models/dispute.rb +80 -0
- data/lib/dodopayments/models/dispute_list_params.rb +79 -0
- data/lib/dodopayments/models/dispute_retrieve_params.rb +18 -0
- data/lib/dodopayments/models/dispute_stage.rb +14 -0
- data/lib/dodopayments/models/dispute_status.rb +18 -0
- data/lib/dodopayments/models/intent_status.rb +22 -0
- data/lib/dodopayments/models/invoices/payment_retrieve_params.rb +20 -0
- data/lib/dodopayments/models/license_activate_params.rb +30 -0
- data/lib/dodopayments/models/license_deactivate_params.rb +30 -0
- data/lib/dodopayments/models/license_key.rb +113 -0
- data/lib/dodopayments/models/license_key_duration.rb +25 -0
- data/lib/dodopayments/models/license_key_instance.rb +43 -0
- data/lib/dodopayments/models/license_key_instance_list_params.rb +39 -0
- data/lib/dodopayments/models/license_key_instance_retrieve_params.rb +18 -0
- data/lib/dodopayments/models/license_key_instance_update_params.rb +24 -0
- data/lib/dodopayments/models/license_key_list_params.rb +53 -0
- data/lib/dodopayments/models/license_key_retrieve_params.rb +18 -0
- data/lib/dodopayments/models/license_key_status.rb +14 -0
- data/lib/dodopayments/models/license_key_update_params.rb +42 -0
- data/lib/dodopayments/models/license_validate_params.rb +30 -0
- data/lib/dodopayments/models/license_validate_response.rb +19 -0
- data/lib/dodopayments/models/misc_list_supported_countries_params.rb +18 -0
- data/lib/dodopayments/models/misc_list_supported_countries_response.rb +7 -0
- data/lib/dodopayments/models/one_time_product_cart_item.rb +33 -0
- data/lib/dodopayments/models/payment.rb +339 -0
- data/lib/dodopayments/models/payment_create_params.rb +90 -0
- data/lib/dodopayments/models/payment_create_response.rb +82 -0
- data/lib/dodopayments/models/payment_list_params.rb +79 -0
- data/lib/dodopayments/models/payment_list_response.rb +238 -0
- data/lib/dodopayments/models/payment_retrieve_params.rb +18 -0
- data/lib/dodopayments/models/payout_list_params.rb +32 -0
- data/lib/dodopayments/models/payout_list_response.rb +295 -0
- data/lib/dodopayments/models/price.rb +512 -0
- data/lib/dodopayments/models/product.rb +149 -0
- data/lib/dodopayments/models/product_create_params.rb +107 -0
- data/lib/dodopayments/models/product_delete_params.rb +18 -0
- data/lib/dodopayments/models/product_list_params.rb +54 -0
- data/lib/dodopayments/models/product_list_response.rb +293 -0
- data/lib/dodopayments/models/product_retrieve_params.rb +18 -0
- data/lib/dodopayments/models/product_unarchive_params.rb +18 -0
- data/lib/dodopayments/models/product_update_params.rb +124 -0
- data/lib/dodopayments/models/products/image_update_params.rb +26 -0
- data/lib/dodopayments/models/products/image_update_response.rb +27 -0
- data/lib/dodopayments/models/refund.rb +218 -0
- data/lib/dodopayments/models/refund_create_params.rb +40 -0
- data/lib/dodopayments/models/refund_list_params.rb +71 -0
- data/lib/dodopayments/models/refund_retrieve_params.rb +18 -0
- data/lib/dodopayments/models/refund_status.rb +15 -0
- data/lib/dodopayments/models/subscription.rb +309 -0
- data/lib/dodopayments/models/subscription_create_params.rb +106 -0
- data/lib/dodopayments/models/subscription_create_response.rb +73 -0
- data/lib/dodopayments/models/subscription_list_params.rb +71 -0
- data/lib/dodopayments/models/subscription_retrieve_params.rb +18 -0
- data/lib/dodopayments/models/subscription_status.rb +18 -0
- data/lib/dodopayments/models/subscription_update_params.rb +30 -0
- data/lib/dodopayments/models/time_interval.rb +15 -0
- data/lib/dodopayments/models/webhook_event.rb +73 -0
- data/lib/dodopayments/models/webhook_event_list_params.rb +71 -0
- data/lib/dodopayments/models/webhook_event_retrieve_params.rb +18 -0
- data/lib/dodopayments/pooled_net_requester.rb +164 -0
- data/lib/dodopayments/request_options.rb +110 -0
- data/lib/dodopayments/resources/customers/customer_portal.rb +34 -0
- data/lib/dodopayments/resources/customers.rb +97 -0
- data/lib/dodopayments/resources/discounts.rb +154 -0
- data/lib/dodopayments/resources/disputes.rb +59 -0
- data/lib/dodopayments/resources/invoices/payments.rb +30 -0
- data/lib/dodopayments/resources/invoices.rb +16 -0
- data/lib/dodopayments/resources/license_key_instances.rb +71 -0
- data/lib/dodopayments/resources/license_keys.rb +82 -0
- data/lib/dodopayments/resources/licenses.rb +72 -0
- data/lib/dodopayments/resources/misc.rb +26 -0
- data/lib/dodopayments/resources/payments.rb +93 -0
- data/lib/dodopayments/resources/payouts.rb +33 -0
- data/lib/dodopayments/resources/products/images.rb +34 -0
- data/lib/dodopayments/resources/products.rb +176 -0
- data/lib/dodopayments/resources/refunds.rb +80 -0
- data/lib/dodopayments/resources/subscriptions.rb +117 -0
- data/lib/dodopayments/resources/webhook_events.rb +57 -0
- data/lib/dodopayments/util.rb +717 -0
- data/lib/dodopayments/version.rb +5 -0
- data/lib/dodopayments.rb +128 -0
- data/manifest.yaml +14 -0
- data/rbi/lib/dodopayments/base_client.rbi +186 -0
- data/rbi/lib/dodopayments/base_model.rbi +606 -0
- data/rbi/lib/dodopayments/base_page.rbi +40 -0
- data/rbi/lib/dodopayments/client.rbi +117 -0
- data/rbi/lib/dodopayments/default_page_number_pagination.rbi +17 -0
- data/rbi/lib/dodopayments/errors.rbi +179 -0
- data/rbi/lib/dodopayments/extern.rbi +8 -0
- data/rbi/lib/dodopayments/models/attach_existing_customer.rbi +23 -0
- data/rbi/lib/dodopayments/models/billing_address.rbi +65 -0
- data/rbi/lib/dodopayments/models/country_code.rbi +266 -0
- data/rbi/lib/dodopayments/models/create_new_customer.rbi +61 -0
- data/rbi/lib/dodopayments/models/customer.rbi +85 -0
- data/rbi/lib/dodopayments/models/customer_create_params.rbi +60 -0
- data/rbi/lib/dodopayments/models/customer_limited_details.rbi +42 -0
- data/rbi/lib/dodopayments/models/customer_list_params.rbi +52 -0
- data/rbi/lib/dodopayments/models/customer_portal_session.rbi +23 -0
- data/rbi/lib/dodopayments/models/customer_request.rbi +15 -0
- data/rbi/lib/dodopayments/models/customer_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/customer_update_params.rbi +50 -0
- data/rbi/lib/dodopayments/models/customers/customer_portal_create_params.rbi +37 -0
- data/rbi/lib/dodopayments/models/discount.rbi +161 -0
- data/rbi/lib/dodopayments/models/discount_create_params.rbi +124 -0
- data/rbi/lib/dodopayments/models/discount_delete_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/discount_list_params.rbi +52 -0
- data/rbi/lib/dodopayments/models/discount_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/discount_type.rbi +17 -0
- data/rbi/lib/dodopayments/models/discount_update_params.rbi +119 -0
- data/rbi/lib/dodopayments/models/dispute.rbi +112 -0
- data/rbi/lib/dodopayments/models/dispute_list_params.rbi +116 -0
- data/rbi/lib/dodopayments/models/dispute_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/dispute_stage.rbi +19 -0
- data/rbi/lib/dodopayments/models/dispute_status.rbi +23 -0
- data/rbi/lib/dodopayments/models/intent_status.rbi +27 -0
- data/rbi/lib/dodopayments/models/invoices/payment_retrieve_params.rbi +23 -0
- data/rbi/lib/dodopayments/models/license_activate_params.rbi +43 -0
- data/rbi/lib/dodopayments/models/license_deactivate_params.rbi +50 -0
- data/rbi/lib/dodopayments/models/license_key.rbi +170 -0
- data/rbi/lib/dodopayments/models/license_key_duration.rbi +31 -0
- data/rbi/lib/dodopayments/models/license_key_instance.rbi +68 -0
- data/rbi/lib/dodopayments/models/license_key_instance_list_params.rbi +63 -0
- data/rbi/lib/dodopayments/models/license_key_instance_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/license_key_instance_update_params.rbi +35 -0
- data/rbi/lib/dodopayments/models/license_key_list_params.rbi +85 -0
- data/rbi/lib/dodopayments/models/license_key_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/license_key_status.rbi +19 -0
- data/rbi/lib/dodopayments/models/license_key_update_params.rbi +66 -0
- data/rbi/lib/dodopayments/models/license_validate_params.rbi +50 -0
- data/rbi/lib/dodopayments/models/license_validate_response.rbi +23 -0
- data/rbi/lib/dodopayments/models/misc_list_supported_countries_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/misc_list_supported_countries_response.rbi +7 -0
- data/rbi/lib/dodopayments/models/one_time_product_cart_item.rbi +43 -0
- data/rbi/lib/dodopayments/models/payment.rbi +439 -0
- data/rbi/lib/dodopayments/models/payment_create_params.rbi +133 -0
- data/rbi/lib/dodopayments/models/payment_create_response.rbi +127 -0
- data/rbi/lib/dodopayments/models/payment_list_params.rbi +116 -0
- data/rbi/lib/dodopayments/models/payment_list_response.rbi +295 -0
- data/rbi/lib/dodopayments/models/payment_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/payout_list_params.rbi +52 -0
- data/rbi/lib/dodopayments/models/payout_list_response.rbi +374 -0
- data/rbi/lib/dodopayments/models/price.rbi +603 -0
- data/rbi/lib/dodopayments/models/product.rbi +228 -0
- data/rbi/lib/dodopayments/models/product_create_params.rbi +162 -0
- data/rbi/lib/dodopayments/models/product_delete_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/product_list_params.rbi +78 -0
- data/rbi/lib/dodopayments/models/product_list_response.rbi +374 -0
- data/rbi/lib/dodopayments/models/product_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/product_unarchive_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/product_update_params.rbi +191 -0
- data/rbi/lib/dodopayments/models/products/image_update_params.rbi +41 -0
- data/rbi/lib/dodopayments/models/products/image_update_response.rbi +33 -0
- data/rbi/lib/dodopayments/models/refund.rbi +267 -0
- data/rbi/lib/dodopayments/models/refund_create_params.rbi +64 -0
- data/rbi/lib/dodopayments/models/refund_list_params.rbi +104 -0
- data/rbi/lib/dodopayments/models/refund_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/refund_status.rbi +20 -0
- data/rbi/lib/dodopayments/models/subscription.rbi +397 -0
- data/rbi/lib/dodopayments/models/subscription_create_params.rbi +154 -0
- data/rbi/lib/dodopayments/models/subscription_create_response.rbi +113 -0
- data/rbi/lib/dodopayments/models/subscription_list_params.rbi +104 -0
- data/rbi/lib/dodopayments/models/subscription_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/models/subscription_status.rbi +23 -0
- data/rbi/lib/dodopayments/models/subscription_update_params.rbi +50 -0
- data/rbi/lib/dodopayments/models/time_interval.rbi +20 -0
- data/rbi/lib/dodopayments/models/webhook_event.rbi +114 -0
- data/rbi/lib/dodopayments/models/webhook_event_list_params.rbi +104 -0
- data/rbi/lib/dodopayments/models/webhook_event_retrieve_params.rbi +21 -0
- data/rbi/lib/dodopayments/pooled_net_requester.rbi +47 -0
- data/rbi/lib/dodopayments/request_options.rbi +109 -0
- data/rbi/lib/dodopayments/resources/customers/customer_portal.rbi +30 -0
- data/rbi/lib/dodopayments/resources/customers.rbi +76 -0
- data/rbi/lib/dodopayments/resources/discounts.rbi +139 -0
- data/rbi/lib/dodopayments/resources/disputes.rbi +57 -0
- data/rbi/lib/dodopayments/resources/invoices/payments.rbi +23 -0
- data/rbi/lib/dodopayments/resources/invoices.rbi +15 -0
- data/rbi/lib/dodopayments/resources/license_key_instances.rbi +61 -0
- data/rbi/lib/dodopayments/resources/license_keys.rbi +77 -0
- data/rbi/lib/dodopayments/resources/licenses.rbi +44 -0
- data/rbi/lib/dodopayments/resources/misc.rbi +18 -0
- data/rbi/lib/dodopayments/resources/payments.rbi +91 -0
- data/rbi/lib/dodopayments/resources/payouts.rbi +28 -0
- data/rbi/lib/dodopayments/resources/products/images.rbi +29 -0
- data/rbi/lib/dodopayments/resources/products.rbi +164 -0
- data/rbi/lib/dodopayments/resources/refunds.rbi +75 -0
- data/rbi/lib/dodopayments/resources/subscriptions.rbi +112 -0
- data/rbi/lib/dodopayments/resources/webhook_events.rbi +50 -0
- data/rbi/lib/dodopayments/util.rbi +270 -0
- data/rbi/lib/dodopayments/version.rbi +5 -0
- data/sig/dodopayments/base_client.rbs +103 -0
- data/sig/dodopayments/base_model.rbs +246 -0
- data/sig/dodopayments/base_page.rbs +20 -0
- data/sig/dodopayments/client.rbs +58 -0
- data/sig/dodopayments/default_page_number_pagination.rbs +7 -0
- data/sig/dodopayments/errors.rbs +99 -0
- data/sig/dodopayments/extern.rbs +4 -0
- data/sig/dodopayments/models/attach_existing_customer.rbs +18 -0
- data/sig/dodopayments/models/billing_address.rbs +38 -0
- data/sig/dodopayments/models/country_code.rbs +508 -0
- data/sig/dodopayments/models/create_new_customer.rbs +37 -0
- data/sig/dodopayments/models/customer.rbs +42 -0
- data/sig/dodopayments/models/customer_create_params.rbs +32 -0
- data/sig/dodopayments/models/customer_limited_details.rbs +23 -0
- data/sig/dodopayments/models/customer_list_params.rbs +29 -0
- data/sig/dodopayments/models/customer_portal_session.rbs +18 -0
- data/sig/dodopayments/models/customer_request.rbs +11 -0
- data/sig/dodopayments/models/customer_retrieve_params.rbs +19 -0
- data/sig/dodopayments/models/customer_update_params.rbs +29 -0
- data/sig/dodopayments/models/customers/customer_portal_create_params.rbs +27 -0
- data/sig/dodopayments/models/discount.rbs +62 -0
- data/sig/dodopayments/models/discount_create_params.rbs +52 -0
- data/sig/dodopayments/models/discount_delete_params.rbs +19 -0
- data/sig/dodopayments/models/discount_list_params.rbs +29 -0
- data/sig/dodopayments/models/discount_retrieve_params.rbs +19 -0
- data/sig/dodopayments/models/discount_type.rbs +11 -0
- data/sig/dodopayments/models/discount_update_params.rbs +52 -0
- data/sig/dodopayments/models/dispute.rbs +50 -0
- data/sig/dodopayments/models/dispute_list_params.rbs +52 -0
- data/sig/dodopayments/models/dispute_retrieve_params.rbs +19 -0
- data/sig/dodopayments/models/dispute_stage.rbs +13 -0
- data/sig/dodopayments/models/dispute_status.rbs +24 -0
- data/sig/dodopayments/models/intent_status.rbs +32 -0
- data/sig/dodopayments/models/invoices/payment_retrieve_params.rbs +21 -0
- data/sig/dodopayments/models/license_activate_params.rbs +28 -0
- data/sig/dodopayments/models/license_deactivate_params.rbs +29 -0
- data/sig/dodopayments/models/license_key.rbs +66 -0
- data/sig/dodopayments/models/license_key_duration.rbs +21 -0
- data/sig/dodopayments/models/license_key_instance.rbs +39 -0
- data/sig/dodopayments/models/license_key_instance_list_params.rbs +32 -0
- data/sig/dodopayments/models/license_key_instance_retrieve_params.rbs +20 -0
- data/sig/dodopayments/models/license_key_instance_update_params.rbs +22 -0
- data/sig/dodopayments/models/license_key_list_params.rbs +44 -0
- data/sig/dodopayments/models/license_key_retrieve_params.rbs +19 -0
- data/sig/dodopayments/models/license_key_status.rbs +13 -0
- data/sig/dodopayments/models/license_key_update_params.rbs +32 -0
- data/sig/dodopayments/models/license_validate_params.rbs +29 -0
- data/sig/dodopayments/models/license_validate_response.rbs +18 -0
- data/sig/dodopayments/models/misc_list_supported_countries_params.rbs +20 -0
- data/sig/dodopayments/models/misc_list_supported_countries_response.rbs +8 -0
- data/sig/dodopayments/models/one_time_product_cart_item.rbs +23 -0
- data/sig/dodopayments/models/payment.rbs +408 -0
- data/sig/dodopayments/models/payment_create_params.rbs +58 -0
- data/sig/dodopayments/models/payment_create_response.rbs +51 -0
- data/sig/dodopayments/models/payment_list_params.rbs +52 -0
- data/sig/dodopayments/models/payment_list_response.rbs +356 -0
- data/sig/dodopayments/models/payment_retrieve_params.rbs +19 -0
- data/sig/dodopayments/models/payout_list_params.rbs +29 -0
- data/sig/dodopayments/models/payout_list_response.rbs +386 -0
- data/sig/dodopayments/models/price.rbs +717 -0
- data/sig/dodopayments/models/product.rbs +89 -0
- data/sig/dodopayments/models/product_create_params.rbs +71 -0
- data/sig/dodopayments/models/product_delete_params.rbs +19 -0
- data/sig/dodopayments/models/product_list_params.rbs +42 -0
- data/sig/dodopayments/models/product_list_response.rbs +379 -0
- data/sig/dodopayments/models/product_retrieve_params.rbs +19 -0
- data/sig/dodopayments/models/product_unarchive_params.rbs +19 -0
- data/sig/dodopayments/models/product_update_params.rbs +75 -0
- data/sig/dodopayments/models/products/image_update_params.rbs +27 -0
- data/sig/dodopayments/models/products/image_update_response.rbs +22 -0
- data/sig/dodopayments/models/refund.rbs +345 -0
- data/sig/dodopayments/models/refund_create_params.rbs +32 -0
- data/sig/dodopayments/models/refund_list_params.rbs +48 -0
- data/sig/dodopayments/models/refund_retrieve_params.rbs +19 -0
- data/sig/dodopayments/models/refund_status.rbs +14 -0
- data/sig/dodopayments/models/subscription.rbs +387 -0
- data/sig/dodopayments/models/subscription_create_params.rbs +66 -0
- data/sig/dodopayments/models/subscription_create_response.rbs +47 -0
- data/sig/dodopayments/models/subscription_list_params.rbs +48 -0
- data/sig/dodopayments/models/subscription_retrieve_params.rbs +19 -0
- data/sig/dodopayments/models/subscription_status.rbs +18 -0
- data/sig/dodopayments/models/subscription_update_params.rbs +32 -0
- data/sig/dodopayments/models/time_interval.rbs +14 -0
- data/sig/dodopayments/models/webhook_event.rbs +50 -0
- data/sig/dodopayments/models/webhook_event_list_params.rbs +48 -0
- data/sig/dodopayments/models/webhook_event_retrieve_params.rbs +19 -0
- data/sig/dodopayments/pooled_net_requester.rbs +30 -0
- data/sig/dodopayments/request_options.rbs +46 -0
- data/sig/dodopayments/resources/customers/customer_portal.rbs +21 -0
- data/sig/dodopayments/resources/customers.rbs +55 -0
- data/sig/dodopayments/resources/discounts.rbs +73 -0
- data/sig/dodopayments/resources/disputes.rbs +33 -0
- data/sig/dodopayments/resources/invoices/payments.rbs +20 -0
- data/sig/dodopayments/resources/invoices.rbs +9 -0
- data/sig/dodopayments/resources/license_key_instances.rbs +42 -0
- data/sig/dodopayments/resources/license_keys.rbs +46 -0
- data/sig/dodopayments/resources/licenses.rbs +40 -0
- data/sig/dodopayments/resources/misc.rbs +16 -0
- data/sig/dodopayments/resources/payments.rbs +49 -0
- data/sig/dodopayments/resources/payouts.rbs +17 -0
- data/sig/dodopayments/resources/products/images.rbs +21 -0
- data/sig/dodopayments/resources/products.rbs +86 -0
- data/sig/dodopayments/resources/refunds.rbs +43 -0
- data/sig/dodopayments/resources/subscriptions.rbs +65 -0
- data/sig/dodopayments/resources/webhook_events.rbs +33 -0
- data/sig/dodopayments/util.rbs +136 -0
- data/sig/dodopayments/version.rbs +3 -0
- metadata +383 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class SubscriptionCreateParams < Dodopayments::BaseModel
|
6
|
+
# @!parse
|
7
|
+
# extend Dodopayments::RequestParameters::Converter
|
8
|
+
include Dodopayments::RequestParameters
|
9
|
+
|
10
|
+
# @!attribute billing
|
11
|
+
#
|
12
|
+
# @return [Dodopayments::Models::BillingAddress]
|
13
|
+
required :billing, -> { Dodopayments::Models::BillingAddress }
|
14
|
+
|
15
|
+
# @!attribute customer
|
16
|
+
#
|
17
|
+
# @return [Dodopayments::Models::AttachExistingCustomer, Dodopayments::Models::CreateNewCustomer]
|
18
|
+
required :customer, union: -> { Dodopayments::Models::CustomerRequest }
|
19
|
+
|
20
|
+
# @!attribute product_id
|
21
|
+
# Unique identifier of the product to subscribe to
|
22
|
+
#
|
23
|
+
# @return [String]
|
24
|
+
required :product_id, String
|
25
|
+
|
26
|
+
# @!attribute quantity
|
27
|
+
# Number of units to subscribe for. Must be at least 1.
|
28
|
+
#
|
29
|
+
# @return [Integer]
|
30
|
+
required :quantity, Integer
|
31
|
+
|
32
|
+
# @!attribute discount_code
|
33
|
+
# Discount Code to apply to the subscription
|
34
|
+
#
|
35
|
+
# @return [String, nil]
|
36
|
+
optional :discount_code, String, nil?: true
|
37
|
+
|
38
|
+
# @!attribute [r] metadata
|
39
|
+
#
|
40
|
+
# @return [Hash{Symbol=>String}, nil]
|
41
|
+
optional :metadata, Dodopayments::HashOf[String]
|
42
|
+
|
43
|
+
# @!parse
|
44
|
+
# # @return [Hash{Symbol=>String}]
|
45
|
+
# attr_writer :metadata
|
46
|
+
|
47
|
+
# @!attribute payment_link
|
48
|
+
# If true, generates a payment link. Defaults to false if not specified.
|
49
|
+
#
|
50
|
+
# @return [Boolean, nil]
|
51
|
+
optional :payment_link, Dodopayments::BooleanModel, nil?: true
|
52
|
+
|
53
|
+
# @!attribute return_url
|
54
|
+
# Optional URL to redirect after successful subscription creation
|
55
|
+
#
|
56
|
+
# @return [String, nil]
|
57
|
+
optional :return_url, String, nil?: true
|
58
|
+
|
59
|
+
# @!attribute tax_id
|
60
|
+
# Tax ID in case the payment is B2B. If tax id validation fails the payment
|
61
|
+
# creation will fail
|
62
|
+
#
|
63
|
+
# @return [String, nil]
|
64
|
+
optional :tax_id, String, nil?: true
|
65
|
+
|
66
|
+
# @!attribute trial_period_days
|
67
|
+
# Optional trial period in days If specified, this value overrides the trial
|
68
|
+
# period set in the product's price Must be between 0 and 10000 days
|
69
|
+
#
|
70
|
+
# @return [Integer, nil]
|
71
|
+
optional :trial_period_days, Integer, nil?: true
|
72
|
+
|
73
|
+
# @!parse
|
74
|
+
# # @param billing [Dodopayments::Models::BillingAddress]
|
75
|
+
# # @param customer [Dodopayments::Models::AttachExistingCustomer, Dodopayments::Models::CreateNewCustomer]
|
76
|
+
# # @param product_id [String]
|
77
|
+
# # @param quantity [Integer]
|
78
|
+
# # @param discount_code [String, nil]
|
79
|
+
# # @param metadata [Hash{Symbol=>String}]
|
80
|
+
# # @param payment_link [Boolean, nil]
|
81
|
+
# # @param return_url [String, nil]
|
82
|
+
# # @param tax_id [String, nil]
|
83
|
+
# # @param trial_period_days [Integer, nil]
|
84
|
+
# # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
|
85
|
+
# #
|
86
|
+
# def initialize(
|
87
|
+
# billing:,
|
88
|
+
# customer:,
|
89
|
+
# product_id:,
|
90
|
+
# quantity:,
|
91
|
+
# discount_code: nil,
|
92
|
+
# metadata: nil,
|
93
|
+
# payment_link: nil,
|
94
|
+
# return_url: nil,
|
95
|
+
# tax_id: nil,
|
96
|
+
# trial_period_days: nil,
|
97
|
+
# request_options: {},
|
98
|
+
# **
|
99
|
+
# )
|
100
|
+
# super
|
101
|
+
# end
|
102
|
+
|
103
|
+
# def initialize: (Hash | Dodopayments::BaseModel) -> void
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class SubscriptionCreateResponse < Dodopayments::BaseModel
|
6
|
+
# @!attribute customer
|
7
|
+
#
|
8
|
+
# @return [Dodopayments::Models::CustomerLimitedDetails]
|
9
|
+
required :customer, -> { Dodopayments::Models::CustomerLimitedDetails }
|
10
|
+
|
11
|
+
# @!attribute metadata
|
12
|
+
#
|
13
|
+
# @return [Hash{Symbol=>String}]
|
14
|
+
required :metadata, Dodopayments::HashOf[String]
|
15
|
+
|
16
|
+
# @!attribute recurring_pre_tax_amount
|
17
|
+
# Tax will be added to the amount and charged to the customer on each billing
|
18
|
+
# cycle
|
19
|
+
#
|
20
|
+
# @return [Integer]
|
21
|
+
required :recurring_pre_tax_amount, Integer
|
22
|
+
|
23
|
+
# @!attribute subscription_id
|
24
|
+
# Unique identifier for the subscription
|
25
|
+
#
|
26
|
+
# @return [String]
|
27
|
+
required :subscription_id, String
|
28
|
+
|
29
|
+
# @!attribute client_secret
|
30
|
+
# Client secret used to load Dodo checkout SDK NOTE : Dodo checkout SDK will be
|
31
|
+
# coming soon
|
32
|
+
#
|
33
|
+
# @return [String, nil]
|
34
|
+
optional :client_secret, String, nil?: true
|
35
|
+
|
36
|
+
# @!attribute discount_id
|
37
|
+
# The discount id if discount is applied
|
38
|
+
#
|
39
|
+
# @return [String, nil]
|
40
|
+
optional :discount_id, String, nil?: true
|
41
|
+
|
42
|
+
# @!attribute payment_link
|
43
|
+
# URL to checkout page
|
44
|
+
#
|
45
|
+
# @return [String, nil]
|
46
|
+
optional :payment_link, String, nil?: true
|
47
|
+
|
48
|
+
# @!parse
|
49
|
+
# # @param customer [Dodopayments::Models::CustomerLimitedDetails]
|
50
|
+
# # @param metadata [Hash{Symbol=>String}]
|
51
|
+
# # @param recurring_pre_tax_amount [Integer]
|
52
|
+
# # @param subscription_id [String]
|
53
|
+
# # @param client_secret [String, nil]
|
54
|
+
# # @param discount_id [String, nil]
|
55
|
+
# # @param payment_link [String, nil]
|
56
|
+
# #
|
57
|
+
# def initialize(
|
58
|
+
# customer:,
|
59
|
+
# metadata:,
|
60
|
+
# recurring_pre_tax_amount:,
|
61
|
+
# subscription_id:,
|
62
|
+
# client_secret: nil,
|
63
|
+
# discount_id: nil,
|
64
|
+
# payment_link: nil,
|
65
|
+
# **
|
66
|
+
# )
|
67
|
+
# super
|
68
|
+
# end
|
69
|
+
|
70
|
+
# def initialize: (Hash | Dodopayments::BaseModel) -> void
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class SubscriptionListParams < Dodopayments::BaseModel
|
6
|
+
# @!parse
|
7
|
+
# extend Dodopayments::RequestParameters::Converter
|
8
|
+
include Dodopayments::RequestParameters
|
9
|
+
|
10
|
+
# @!attribute created_at_gte
|
11
|
+
# Get events after this created time
|
12
|
+
#
|
13
|
+
# @return [Time, nil]
|
14
|
+
optional :created_at_gte, Time, nil?: true
|
15
|
+
|
16
|
+
# @!attribute created_at_lte
|
17
|
+
# Get events created before this time
|
18
|
+
#
|
19
|
+
# @return [Time, nil]
|
20
|
+
optional :created_at_lte, Time, nil?: true
|
21
|
+
|
22
|
+
# @!attribute customer_id
|
23
|
+
# Filter by customer id
|
24
|
+
#
|
25
|
+
# @return [String, nil]
|
26
|
+
optional :customer_id, String, nil?: true
|
27
|
+
|
28
|
+
# @!attribute page_number
|
29
|
+
# Page number default is 0
|
30
|
+
#
|
31
|
+
# @return [Integer, nil]
|
32
|
+
optional :page_number, Integer, nil?: true
|
33
|
+
|
34
|
+
# @!attribute page_size
|
35
|
+
# Page size default is 10 max is 100
|
36
|
+
#
|
37
|
+
# @return [Integer, nil]
|
38
|
+
optional :page_size, Integer, nil?: true
|
39
|
+
|
40
|
+
# @!attribute status
|
41
|
+
# Filter by status
|
42
|
+
#
|
43
|
+
# @return [Symbol, Dodopayments::Models::SubscriptionStatus, nil]
|
44
|
+
optional :status, enum: -> { Dodopayments::Models::SubscriptionStatus }, nil?: true
|
45
|
+
|
46
|
+
# @!parse
|
47
|
+
# # @param created_at_gte [Time, nil]
|
48
|
+
# # @param created_at_lte [Time, nil]
|
49
|
+
# # @param customer_id [String, nil]
|
50
|
+
# # @param page_number [Integer, nil]
|
51
|
+
# # @param page_size [Integer, nil]
|
52
|
+
# # @param status [Symbol, Dodopayments::Models::SubscriptionStatus, nil]
|
53
|
+
# # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
|
54
|
+
# #
|
55
|
+
# def initialize(
|
56
|
+
# created_at_gte: nil,
|
57
|
+
# created_at_lte: nil,
|
58
|
+
# customer_id: nil,
|
59
|
+
# page_number: nil,
|
60
|
+
# page_size: nil,
|
61
|
+
# status: nil,
|
62
|
+
# request_options: {},
|
63
|
+
# **
|
64
|
+
# )
|
65
|
+
# super
|
66
|
+
# end
|
67
|
+
|
68
|
+
# def initialize: (Hash | Dodopayments::BaseModel) -> void
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class SubscriptionRetrieveParams < Dodopayments::BaseModel
|
6
|
+
# @!parse
|
7
|
+
# extend Dodopayments::RequestParameters::Converter
|
8
|
+
include Dodopayments::RequestParameters
|
9
|
+
|
10
|
+
# @!parse
|
11
|
+
# # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
|
12
|
+
# #
|
13
|
+
# def initialize(request_options: {}, **) = super
|
14
|
+
|
15
|
+
# def initialize: (Hash | Dodopayments::BaseModel) -> void
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
# @abstract
|
6
|
+
class SubscriptionStatus < Dodopayments::Enum
|
7
|
+
PENDING = :pending
|
8
|
+
ACTIVE = :active
|
9
|
+
ON_HOLD = :on_hold
|
10
|
+
PAUSED = :paused
|
11
|
+
CANCELLED = :cancelled
|
12
|
+
FAILED = :failed
|
13
|
+
EXPIRED = :expired
|
14
|
+
|
15
|
+
finalize!
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class SubscriptionUpdateParams < Dodopayments::BaseModel
|
6
|
+
# @!parse
|
7
|
+
# extend Dodopayments::RequestParameters::Converter
|
8
|
+
include Dodopayments::RequestParameters
|
9
|
+
|
10
|
+
# @!attribute metadata
|
11
|
+
#
|
12
|
+
# @return [Hash{Symbol=>String}, nil]
|
13
|
+
optional :metadata, Dodopayments::HashOf[String], nil?: true
|
14
|
+
|
15
|
+
# @!attribute status
|
16
|
+
#
|
17
|
+
# @return [Symbol, Dodopayments::Models::SubscriptionStatus, nil]
|
18
|
+
optional :status, enum: -> { Dodopayments::Models::SubscriptionStatus }, nil?: true
|
19
|
+
|
20
|
+
# @!parse
|
21
|
+
# # @param metadata [Hash{Symbol=>String}, nil]
|
22
|
+
# # @param status [Symbol, Dodopayments::Models::SubscriptionStatus, nil]
|
23
|
+
# # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
|
24
|
+
# #
|
25
|
+
# def initialize(metadata: nil, status: nil, request_options: {}, **) = super
|
26
|
+
|
27
|
+
# def initialize: (Hash | Dodopayments::BaseModel) -> void
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class WebhookEvent < Dodopayments::BaseModel
|
6
|
+
# @!attribute business_id
|
7
|
+
#
|
8
|
+
# @return [String]
|
9
|
+
required :business_id, String
|
10
|
+
|
11
|
+
# @!attribute created_at
|
12
|
+
#
|
13
|
+
# @return [Time]
|
14
|
+
required :created_at, Time
|
15
|
+
|
16
|
+
# @!attribute event_id
|
17
|
+
#
|
18
|
+
# @return [String]
|
19
|
+
required :event_id, String
|
20
|
+
|
21
|
+
# @!attribute event_type
|
22
|
+
#
|
23
|
+
# @return [String]
|
24
|
+
required :event_type, String
|
25
|
+
|
26
|
+
# @!attribute object_id_
|
27
|
+
#
|
28
|
+
# @return [String]
|
29
|
+
required :object_id_, String, api_name: :object_id
|
30
|
+
|
31
|
+
# @!attribute latest_attempted_at
|
32
|
+
#
|
33
|
+
# @return [Time, nil]
|
34
|
+
optional :latest_attempted_at, Time, nil?: true
|
35
|
+
|
36
|
+
# @!attribute request
|
37
|
+
#
|
38
|
+
# @return [String, nil]
|
39
|
+
optional :request, String, nil?: true
|
40
|
+
|
41
|
+
# @!attribute response
|
42
|
+
#
|
43
|
+
# @return [String, nil]
|
44
|
+
optional :response, String, nil?: true
|
45
|
+
|
46
|
+
# @!parse
|
47
|
+
# # @param business_id [String]
|
48
|
+
# # @param created_at [Time]
|
49
|
+
# # @param event_id [String]
|
50
|
+
# # @param event_type [String]
|
51
|
+
# # @param object_id_ [String]
|
52
|
+
# # @param latest_attempted_at [Time, nil]
|
53
|
+
# # @param request [String, nil]
|
54
|
+
# # @param response [String, nil]
|
55
|
+
# #
|
56
|
+
# def initialize(
|
57
|
+
# business_id:,
|
58
|
+
# created_at:,
|
59
|
+
# event_id:,
|
60
|
+
# event_type:,
|
61
|
+
# object_id_:,
|
62
|
+
# latest_attempted_at: nil,
|
63
|
+
# request: nil,
|
64
|
+
# response: nil,
|
65
|
+
# **
|
66
|
+
# )
|
67
|
+
# super
|
68
|
+
# end
|
69
|
+
|
70
|
+
# def initialize: (Hash | Dodopayments::BaseModel) -> void
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class WebhookEventListParams < Dodopayments::BaseModel
|
6
|
+
# @!parse
|
7
|
+
# extend Dodopayments::RequestParameters::Converter
|
8
|
+
include Dodopayments::RequestParameters
|
9
|
+
|
10
|
+
# @!attribute created_at_gte
|
11
|
+
# Get events after this created time
|
12
|
+
#
|
13
|
+
# @return [Time, nil]
|
14
|
+
optional :created_at_gte, Time, nil?: true
|
15
|
+
|
16
|
+
# @!attribute created_at_lte
|
17
|
+
# Get events created before this time
|
18
|
+
#
|
19
|
+
# @return [Time, nil]
|
20
|
+
optional :created_at_lte, Time, nil?: true
|
21
|
+
|
22
|
+
# @!attribute limit
|
23
|
+
# Min : 1, Max : 100, default 10
|
24
|
+
#
|
25
|
+
# @return [Integer, nil]
|
26
|
+
optional :limit, Integer, nil?: true
|
27
|
+
|
28
|
+
# @!attribute object_id_
|
29
|
+
# Get events history of a specific object like payment/subscription/refund/dispute
|
30
|
+
#
|
31
|
+
# @return [String, nil]
|
32
|
+
optional :object_id_, String, api_name: :object_id, nil?: true
|
33
|
+
|
34
|
+
# @!attribute page_number
|
35
|
+
# Page number default is 0
|
36
|
+
#
|
37
|
+
# @return [Integer, nil]
|
38
|
+
optional :page_number, Integer, nil?: true
|
39
|
+
|
40
|
+
# @!attribute page_size
|
41
|
+
# Page size default is 10 max is 100
|
42
|
+
#
|
43
|
+
# @return [Integer, nil]
|
44
|
+
optional :page_size, Integer, nil?: true
|
45
|
+
|
46
|
+
# @!parse
|
47
|
+
# # @param created_at_gte [Time, nil]
|
48
|
+
# # @param created_at_lte [Time, nil]
|
49
|
+
# # @param limit [Integer, nil]
|
50
|
+
# # @param object_id_ [String, nil]
|
51
|
+
# # @param page_number [Integer, nil]
|
52
|
+
# # @param page_size [Integer, nil]
|
53
|
+
# # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
|
54
|
+
# #
|
55
|
+
# def initialize(
|
56
|
+
# created_at_gte: nil,
|
57
|
+
# created_at_lte: nil,
|
58
|
+
# limit: nil,
|
59
|
+
# object_id_: nil,
|
60
|
+
# page_number: nil,
|
61
|
+
# page_size: nil,
|
62
|
+
# request_options: {},
|
63
|
+
# **
|
64
|
+
# )
|
65
|
+
# super
|
66
|
+
# end
|
67
|
+
|
68
|
+
# def initialize: (Hash | Dodopayments::BaseModel) -> void
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Models
|
5
|
+
class WebhookEventRetrieveParams < Dodopayments::BaseModel
|
6
|
+
# @!parse
|
7
|
+
# extend Dodopayments::RequestParameters::Converter
|
8
|
+
include Dodopayments::RequestParameters
|
9
|
+
|
10
|
+
# @!parse
|
11
|
+
# # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
|
12
|
+
# #
|
13
|
+
# def initialize(request_options: {}, **) = super
|
14
|
+
|
15
|
+
# def initialize: (Hash | Dodopayments::BaseModel) -> void
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,164 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
# @api private
|
5
|
+
class PooledNetRequester
|
6
|
+
class << self
|
7
|
+
# @api private
|
8
|
+
#
|
9
|
+
# @param url [URI::Generic]
|
10
|
+
#
|
11
|
+
# @return [Net::HTTP]
|
12
|
+
def connect(url)
|
13
|
+
port =
|
14
|
+
case [url.port, url.scheme]
|
15
|
+
in [Integer, _]
|
16
|
+
url.port
|
17
|
+
in [nil, "http" | "ws"]
|
18
|
+
Net::HTTP.http_default_port
|
19
|
+
in [nil, "https" | "wss"]
|
20
|
+
Net::HTTP.https_default_port
|
21
|
+
end
|
22
|
+
|
23
|
+
Net::HTTP.new(url.host, port).tap do
|
24
|
+
_1.use_ssl = %w[https wss].include?(url.scheme)
|
25
|
+
_1.max_retries = 0
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# @api private
|
30
|
+
#
|
31
|
+
# @param conn [Net::HTTP]
|
32
|
+
# @param deadline [Float]
|
33
|
+
def calibrate_socket_timeout(conn, deadline)
|
34
|
+
timeout = deadline - Dodopayments::Util.monotonic_secs
|
35
|
+
conn.open_timeout = conn.read_timeout = conn.write_timeout = conn.continue_timeout = timeout
|
36
|
+
end
|
37
|
+
|
38
|
+
# @api private
|
39
|
+
#
|
40
|
+
# @param request [Hash{Symbol=>Object}] .
|
41
|
+
#
|
42
|
+
# @option request [Symbol] :method
|
43
|
+
#
|
44
|
+
# @option request [URI::Generic] :url
|
45
|
+
#
|
46
|
+
# @option request [Hash{String=>String}] :headers
|
47
|
+
#
|
48
|
+
# @param blk [Proc]
|
49
|
+
#
|
50
|
+
# @return [Net::HTTPGenericRequest]
|
51
|
+
def build_request(request, &)
|
52
|
+
method, url, headers, body = request.fetch_values(:method, :url, :headers, :body)
|
53
|
+
req = Net::HTTPGenericRequest.new(
|
54
|
+
method.to_s.upcase,
|
55
|
+
!body.nil?,
|
56
|
+
method != :head,
|
57
|
+
url.to_s
|
58
|
+
)
|
59
|
+
|
60
|
+
headers.each { req[_1] = _2 }
|
61
|
+
|
62
|
+
case body
|
63
|
+
in nil
|
64
|
+
in String
|
65
|
+
req["content-length"] ||= body.bytesize.to_s unless req["transfer-encoding"]
|
66
|
+
req.body_stream = Dodopayments::Util::ReadIOAdapter.new(body, &)
|
67
|
+
in StringIO
|
68
|
+
req["content-length"] ||= body.size.to_s unless req["transfer-encoding"]
|
69
|
+
req.body_stream = Dodopayments::Util::ReadIOAdapter.new(body, &)
|
70
|
+
in IO | Enumerator
|
71
|
+
req["transfer-encoding"] ||= "chunked" unless req["content-length"]
|
72
|
+
req.body_stream = Dodopayments::Util::ReadIOAdapter.new(body, &)
|
73
|
+
end
|
74
|
+
|
75
|
+
req
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# @api private
|
80
|
+
#
|
81
|
+
# @param url [URI::Generic]
|
82
|
+
# @param blk [Proc]
|
83
|
+
private def with_pool(url, &)
|
84
|
+
origin = Dodopayments::Util.uri_origin(url)
|
85
|
+
pool =
|
86
|
+
@mutex.synchronize do
|
87
|
+
@pools[origin] ||= ConnectionPool.new(size: @size) do
|
88
|
+
self.class.connect(url)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
pool.with(&)
|
93
|
+
end
|
94
|
+
|
95
|
+
# @api private
|
96
|
+
#
|
97
|
+
# @param request [Hash{Symbol=>Object}] .
|
98
|
+
#
|
99
|
+
# @option request [Symbol] :method
|
100
|
+
#
|
101
|
+
# @option request [URI::Generic] :url
|
102
|
+
#
|
103
|
+
# @option request [Hash{String=>String}] :headers
|
104
|
+
#
|
105
|
+
# @option request [Object] :body
|
106
|
+
#
|
107
|
+
# @option request [Float] :deadline
|
108
|
+
#
|
109
|
+
# @return [Array(Net::HTTPResponse, Enumerable)]
|
110
|
+
def execute(request)
|
111
|
+
url, deadline = request.fetch_values(:url, :deadline)
|
112
|
+
|
113
|
+
eof = false
|
114
|
+
finished = false
|
115
|
+
enum = Enumerator.new do |y|
|
116
|
+
with_pool(url) do |conn|
|
117
|
+
next if finished
|
118
|
+
|
119
|
+
req = self.class.build_request(request) do
|
120
|
+
self.class.calibrate_socket_timeout(conn, deadline)
|
121
|
+
end
|
122
|
+
|
123
|
+
self.class.calibrate_socket_timeout(conn, deadline)
|
124
|
+
conn.start unless conn.started?
|
125
|
+
|
126
|
+
self.class.calibrate_socket_timeout(conn, deadline)
|
127
|
+
conn.request(req) do |rsp|
|
128
|
+
y << [conn, rsp]
|
129
|
+
break if finished
|
130
|
+
|
131
|
+
rsp.read_body do |bytes|
|
132
|
+
y << bytes
|
133
|
+
break if finished
|
134
|
+
|
135
|
+
self.class.calibrate_socket_timeout(conn, deadline)
|
136
|
+
end
|
137
|
+
eof = true
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
conn, response = enum.next
|
143
|
+
body = Dodopayments::Util.fused_enum(enum, external: true) do
|
144
|
+
finished = true
|
145
|
+
tap do
|
146
|
+
enum.next
|
147
|
+
rescue StopIteration
|
148
|
+
nil
|
149
|
+
end
|
150
|
+
conn.finish if !eof && conn&.started?
|
151
|
+
end
|
152
|
+
[response, (response.body = body)]
|
153
|
+
end
|
154
|
+
|
155
|
+
# @api private
|
156
|
+
#
|
157
|
+
# @param size [Integer]
|
158
|
+
def initialize(size: Etc.nprocessors)
|
159
|
+
@mutex = Mutex.new
|
160
|
+
@size = size
|
161
|
+
@pools = {}
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|