dodopayments 1.20.0 → 1.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +45 -0
- data/README.md +144 -60
- data/SECURITY.md +2 -2
- data/lib/dodopayments/client.rb +25 -12
- data/lib/dodopayments/errors.rb +23 -1
- data/lib/dodopayments/file_part.rb +2 -2
- data/lib/dodopayments/internal/cursor_page_pagination.rb +90 -0
- data/lib/dodopayments/internal/default_page_number_pagination.rb +2 -2
- data/lib/dodopayments/internal/transport/base_client.rb +90 -10
- data/lib/dodopayments/internal/transport/pooled_net_requester.rb +17 -1
- data/lib/dodopayments/internal/type/array_of.rb +16 -2
- data/lib/dodopayments/internal/type/base_model.rb +152 -59
- data/lib/dodopayments/internal/type/boolean.rb +15 -1
- data/lib/dodopayments/internal/type/converter.rb +86 -33
- data/lib/dodopayments/internal/type/enum.rb +30 -6
- data/lib/dodopayments/internal/type/file_input.rb +13 -1
- data/lib/dodopayments/internal/type/hash_of.rb +16 -2
- data/lib/dodopayments/internal/type/request_parameters.rb +6 -12
- data/lib/dodopayments/internal/type/union.rb +44 -31
- data/lib/dodopayments/internal/type/unknown.rb +15 -1
- data/lib/dodopayments/internal/util.rb +136 -12
- data/lib/dodopayments/internal.rb +9 -0
- data/lib/dodopayments/models/addon_create_params.rb +6 -10
- data/lib/dodopayments/models/addon_list_params.rb +4 -4
- data/lib/dodopayments/models/addon_response.rb +6 -10
- data/lib/dodopayments/models/addon_update_params.rb +6 -10
- data/lib/dodopayments/models/attach_addon.rb +21 -0
- data/lib/dodopayments/models/billing_address.rb +3 -3
- data/lib/dodopayments/models/brand.rb +107 -0
- data/lib/dodopayments/models/brand_create_params.rb +44 -0
- data/lib/dodopayments/models/{webhook_event_retrieve_params.rb → brand_list_params.rb} +2 -2
- data/lib/dodopayments/models/brand_list_response.rb +17 -0
- data/lib/dodopayments/models/brand_retrieve_params.rb +14 -0
- data/lib/dodopayments/models/brand_update_images_params.rb +14 -0
- data/lib/dodopayments/models/brand_update_images_response.rb +25 -0
- data/lib/dodopayments/models/brand_update_params.rb +43 -0
- data/lib/dodopayments/models/create_new_customer.rb +0 -1
- data/lib/dodopayments/models/customer_list_params.rb +13 -5
- data/lib/dodopayments/models/customer_request.rb +3 -3
- data/lib/dodopayments/models/customers/customer_portal_create_params.rb +2 -2
- data/lib/dodopayments/models/discount.rb +15 -4
- data/lib/dodopayments/models/discount_create_params.rb +17 -6
- data/lib/dodopayments/models/discount_list_params.rb +4 -4
- data/lib/dodopayments/models/discount_update_params.rb +16 -5
- data/lib/dodopayments/models/dispute.rb +15 -7
- data/lib/dodopayments/models/dispute_list_params.rb +44 -16
- data/lib/dodopayments/models/dispute_list_response.rb +77 -0
- data/lib/dodopayments/models/get_dispute.rb +101 -0
- data/lib/dodopayments/models/license_key.rb +3 -3
- data/lib/dodopayments/models/license_key_duration.rb +1 -1
- data/lib/dodopayments/models/license_key_list_params.rb +23 -11
- data/lib/dodopayments/models/license_key_update_params.rb +3 -3
- data/lib/dodopayments/models/misc_list_supported_countries_response.rb +1 -1
- data/lib/dodopayments/models/new_customer.rb +27 -0
- data/lib/dodopayments/models/one_time_product_cart_item.rb +0 -1
- data/lib/dodopayments/models/payment.rb +79 -18
- data/lib/dodopayments/models/payment_create_params.rb +22 -41
- data/lib/dodopayments/models/payment_create_response.rb +16 -6
- data/lib/dodopayments/models/payment_list_params.rb +44 -16
- data/lib/dodopayments/models/payment_list_response.rb +16 -4
- data/lib/dodopayments/models/payment_method_types.rb +31 -0
- data/lib/dodopayments/models/payment_retrieve_line_items_params.rb +14 -0
- data/lib/dodopayments/models/payment_retrieve_line_items_response.rb +63 -0
- data/lib/dodopayments/models/payout_list_params.rb +4 -4
- data/lib/dodopayments/models/payout_list_response.rb +7 -3
- data/lib/dodopayments/models/price.rb +57 -30
- data/lib/dodopayments/models/product.rb +85 -12
- data/lib/dodopayments/models/product_create_params.rb +61 -12
- data/lib/dodopayments/models/product_list_params.rb +15 -7
- data/lib/dodopayments/models/product_list_response.rb +19 -11
- data/lib/dodopayments/models/product_update_files_params.rb +20 -0
- data/lib/dodopayments/models/product_update_files_response.rb +22 -0
- data/lib/dodopayments/models/product_update_params.rb +70 -13
- data/lib/dodopayments/models/products/image_update_params.rb +2 -2
- data/lib/dodopayments/models/refund.rb +15 -5
- data/lib/dodopayments/models/refund_create_params.rb +38 -1
- data/lib/dodopayments/models/refund_list_params.rb +26 -13
- data/lib/dodopayments/models/subscription.rb +38 -18
- data/lib/dodopayments/models/subscription_change_plan_params.rb +19 -3
- data/lib/dodopayments/models/subscription_charge_params.rb +38 -2
- data/lib/dodopayments/models/subscription_create_params.rb +53 -66
- data/lib/dodopayments/models/subscription_create_response.rb +24 -8
- data/lib/dodopayments/models/subscription_list_params.rb +37 -14
- data/lib/dodopayments/models/subscription_list_response.rb +37 -16
- data/lib/dodopayments/models/subscription_status.rb +0 -1
- data/lib/dodopayments/models/subscription_update_params.rb +10 -6
- data/lib/dodopayments/models/webhook_create_params.rb +86 -0
- data/lib/dodopayments/models/webhook_create_response.rb +88 -0
- data/lib/dodopayments/models/webhook_delete_params.rb +14 -0
- data/lib/dodopayments/models/webhook_event_type.rb +35 -0
- data/lib/dodopayments/models/webhook_list_params.rb +30 -0
- data/lib/dodopayments/models/webhook_list_response.rb +88 -0
- data/lib/dodopayments/models/webhook_payload.rb +161 -0
- data/lib/dodopayments/models/webhook_retrieve_params.rb +14 -0
- data/lib/dodopayments/models/webhook_retrieve_response.rb +88 -0
- data/lib/dodopayments/models/webhook_update_params.rb +69 -0
- data/lib/dodopayments/models/webhook_update_response.rb +88 -0
- data/lib/dodopayments/models/webhooks/header_retrieve_params.rb +16 -0
- data/lib/dodopayments/models/webhooks/header_retrieve_response.rb +31 -0
- data/lib/dodopayments/models/webhooks/header_update_params.rb +24 -0
- data/lib/dodopayments/models/your_webhook_url_create_params.rb +32 -0
- data/lib/dodopayments/models.rb +241 -0
- data/lib/dodopayments/request_options.rb +4 -0
- data/lib/dodopayments/resources/addons.rb +13 -21
- data/lib/dodopayments/resources/brands.rb +119 -0
- data/lib/dodopayments/resources/customers/customer_portal.rb +3 -3
- data/lib/dodopayments/resources/customers.rb +12 -10
- data/lib/dodopayments/resources/discounts.rb +24 -19
- data/lib/dodopayments/resources/disputes.rb +12 -12
- data/lib/dodopayments/resources/invoices/payments.rb +3 -2
- data/lib/dodopayments/resources/license_key_instances.rb +5 -5
- data/lib/dodopayments/resources/license_keys.rb +13 -13
- data/lib/dodopayments/resources/licenses.rb +4 -4
- data/lib/dodopayments/resources/misc.rb +1 -1
- data/lib/dodopayments/resources/payments.rb +38 -19
- data/lib/dodopayments/resources/payouts.rb +3 -3
- data/lib/dodopayments/resources/products/images.rb +2 -2
- data/lib/dodopayments/resources/products.rb +58 -24
- data/lib/dodopayments/resources/refunds.rb +14 -12
- data/lib/dodopayments/resources/subscriptions.rb +44 -29
- data/lib/dodopayments/resources/webhook_events.rb +0 -52
- data/lib/dodopayments/resources/webhooks/headers.rb +59 -0
- data/lib/dodopayments/resources/webhooks.rb +157 -0
- data/lib/dodopayments/resources/your_webhook_url.rb +56 -0
- data/lib/dodopayments/version.rb +1 -1
- data/lib/dodopayments.rb +47 -8
- data/rbi/dodopayments/client.rbi +24 -10
- data/rbi/dodopayments/errors.rbi +51 -16
- data/rbi/dodopayments/file_part.rbi +9 -6
- data/rbi/dodopayments/internal/cursor_page_pagination.rbi +25 -0
- data/rbi/dodopayments/internal/default_page_number_pagination.rbi +2 -1
- data/rbi/dodopayments/internal/transport/base_client.rbi +165 -77
- data/rbi/dodopayments/internal/transport/pooled_net_requester.rbi +33 -13
- data/rbi/dodopayments/internal/type/array_of.rbi +40 -24
- data/rbi/dodopayments/internal/type/base_model.rbi +160 -70
- data/rbi/dodopayments/internal/type/base_page.rbi +13 -8
- data/rbi/dodopayments/internal/type/boolean.rbi +24 -14
- data/rbi/dodopayments/internal/type/converter.rbi +135 -33
- data/rbi/dodopayments/internal/type/enum.rbi +29 -13
- data/rbi/dodopayments/internal/type/file_input.rbi +13 -4
- data/rbi/dodopayments/internal/type/hash_of.rbi +40 -24
- data/rbi/dodopayments/internal/type/request_parameters.rbi +14 -4
- data/rbi/dodopayments/internal/type/union.rbi +71 -23
- data/rbi/dodopayments/internal/type/unknown.rbi +24 -6
- data/rbi/dodopayments/internal/util.rbi +274 -89
- data/rbi/dodopayments/internal.rbi +7 -0
- data/rbi/dodopayments/models/addon_cart_response_item.rbi +16 -4
- data/rbi/dodopayments/models/addon_create_params.rbi +33 -24
- data/rbi/dodopayments/models/addon_list_params.rbi +29 -17
- data/rbi/dodopayments/models/addon_response.rbi +33 -27
- data/rbi/dodopayments/models/addon_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/addon_update_images_params.rbi +18 -5
- data/rbi/dodopayments/models/addon_update_images_response.rbi +13 -3
- data/rbi/dodopayments/models/addon_update_params.rbi +34 -25
- data/rbi/dodopayments/models/attach_addon.rbi +28 -0
- data/rbi/dodopayments/models/attach_existing_customer.rbi +13 -3
- data/rbi/dodopayments/models/billing_address.rbi +24 -12
- data/rbi/dodopayments/models/brand.rbi +132 -0
- data/rbi/dodopayments/models/brand_create_params.rbi +68 -0
- data/rbi/dodopayments/models/brand_list_params.rbi +29 -0
- data/rbi/dodopayments/models/brand_list_response.rbi +34 -0
- data/rbi/dodopayments/models/brand_retrieve_params.rbi +32 -0
- data/rbi/dodopayments/models/brand_update_images_params.rbi +32 -0
- data/rbi/dodopayments/models/brand_update_images_response.rbi +36 -0
- data/rbi/dodopayments/models/brand_update_params.rbi +64 -0
- data/rbi/dodopayments/models/country_code.rbi +255 -252
- data/rbi/dodopayments/models/create_new_customer.rbi +27 -11
- data/rbi/dodopayments/models/currency.rbi +149 -148
- data/rbi/dodopayments/models/customer.rbi +27 -15
- data/rbi/dodopayments/models/customer_create_params.rbi +22 -14
- data/rbi/dodopayments/models/customer_limited_details.rbi +21 -4
- data/rbi/dodopayments/models/customer_list_params.rbi +43 -17
- data/rbi/dodopayments/models/customer_portal_session.rbi +13 -3
- data/rbi/dodopayments/models/customer_request.rbi +10 -2
- data/rbi/dodopayments/models/customer_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/customer_update_params.rbi +21 -13
- data/rbi/dodopayments/models/customers/customer_portal_create_params.rbi +26 -8
- data/rbi/dodopayments/models/discount.rbi +42 -22
- data/rbi/dodopayments/models/discount_create_params.rbi +43 -20
- data/rbi/dodopayments/models/discount_delete_params.rbi +18 -5
- data/rbi/dodopayments/models/discount_list_params.rbi +32 -17
- data/rbi/dodopayments/models/discount_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/discount_type.rbi +7 -4
- data/rbi/dodopayments/models/discount_update_params.rbi +43 -20
- data/rbi/dodopayments/models/dispute.rbi +41 -23
- data/rbi/dodopayments/models/dispute_list_params.rbi +178 -33
- data/rbi/dodopayments/models/dispute_list_response.rbi +98 -0
- data/rbi/dodopayments/models/dispute_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/dispute_stage.rbi +11 -6
- data/rbi/dodopayments/models/dispute_status.rbi +20 -10
- data/rbi/dodopayments/models/get_dispute.rbi +124 -0
- data/rbi/dodopayments/models/intent_status.rbi +32 -14
- data/rbi/dodopayments/models/invoices/payment_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/license_activate_params.rbi +21 -6
- data/rbi/dodopayments/models/license_deactivate_params.rbi +21 -13
- data/rbi/dodopayments/models/license_key.rbi +31 -23
- data/rbi/dodopayments/models/license_key_duration.rbi +24 -5
- data/rbi/dodopayments/models/license_key_instance.rbi +19 -4
- data/rbi/dodopayments/models/license_key_instance_list_params.rbi +23 -14
- data/rbi/dodopayments/models/license_key_instance_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/license_key_instance_update_params.rbi +19 -6
- data/rbi/dodopayments/models/license_key_list_params.rbi +91 -26
- data/rbi/dodopayments/models/license_key_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/license_key_status.rbi +10 -6
- data/rbi/dodopayments/models/license_key_update_params.rbi +23 -14
- data/rbi/dodopayments/models/license_validate_params.rbi +25 -13
- data/rbi/dodopayments/models/license_validate_response.rbi +13 -3
- data/rbi/dodopayments/models/misc_list_supported_countries_params.rbi +18 -5
- data/rbi/dodopayments/models/misc_list_supported_countries_response.rbi +1 -1
- data/rbi/dodopayments/models/new_customer.rbi +39 -0
- data/rbi/dodopayments/models/one_time_product_cart_item.rbi +23 -4
- data/rbi/dodopayments/models/payment.rbi +149 -54
- data/rbi/dodopayments/models/payment_create_params.rbi +67 -87
- data/rbi/dodopayments/models/payment_create_response.rbi +45 -22
- data/rbi/dodopayments/models/payment_list_params.rbi +149 -32
- data/rbi/dodopayments/models/payment_list_response.rbi +47 -26
- data/rbi/dodopayments/models/payment_method_types.rbi +52 -0
- data/rbi/dodopayments/models/payment_retrieve_line_items_params.rbi +32 -0
- data/rbi/dodopayments/models/payment_retrieve_line_items_response.rbi +114 -0
- data/rbi/dodopayments/models/payment_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/payout_list_params.rbi +29 -17
- data/rbi/dodopayments/models/payout_list_response.rbi +82 -35
- data/rbi/dodopayments/models/price.rbi +142 -55
- data/rbi/dodopayments/models/product.rbi +177 -38
- data/rbi/dodopayments/models/product_create_params.rbi +151 -36
- data/rbi/dodopayments/models/product_delete_params.rbi +18 -5
- data/rbi/dodopayments/models/product_list_params.rbi +50 -21
- data/rbi/dodopayments/models/product_list_response.rbi +57 -42
- data/rbi/dodopayments/models/product_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/product_unarchive_params.rbi +18 -5
- data/rbi/dodopayments/models/product_update_files_params.rbi +38 -0
- data/rbi/dodopayments/models/product_update_files_response.rbi +29 -0
- data/rbi/dodopayments/models/product_update_params.rbi +160 -37
- data/rbi/dodopayments/models/products/image_update_params.rbi +20 -8
- data/rbi/dodopayments/models/products/image_update_response.rbi +18 -4
- data/rbi/dodopayments/models/refund.rbi +39 -21
- data/rbi/dodopayments/models/refund_create_params.rbi +87 -11
- data/rbi/dodopayments/models/refund_list_params.rbi +86 -29
- data/rbi/dodopayments/models/refund_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/refund_status.rbi +10 -7
- data/rbi/dodopayments/models/subscription.rbi +83 -47
- data/rbi/dodopayments/models/subscription_change_plan_params.rbi +68 -21
- data/rbi/dodopayments/models/subscription_charge_params.rbi +65 -6
- data/rbi/dodopayments/models/subscription_charge_response.rbi +13 -3
- data/rbi/dodopayments/models/subscription_create_params.rbi +136 -128
- data/rbi/dodopayments/models/subscription_create_response.rbi +51 -22
- data/rbi/dodopayments/models/subscription_list_params.rbi +125 -29
- data/rbi/dodopayments/models/subscription_list_response.rbi +85 -44
- data/rbi/dodopayments/models/subscription_retrieve_params.rbi +18 -5
- data/rbi/dodopayments/models/subscription_status.rbi +16 -10
- data/rbi/dodopayments/models/subscription_update_params.rbi +63 -33
- data/rbi/dodopayments/models/tax_category.rbi +11 -7
- data/rbi/dodopayments/models/time_interval.rbi +10 -7
- data/rbi/dodopayments/models/webhook_create_params.rbi +115 -0
- data/rbi/dodopayments/models/webhook_create_response.rbi +112 -0
- data/rbi/dodopayments/models/webhook_delete_params.rbi +32 -0
- data/rbi/dodopayments/models/webhook_event_type.rbi +102 -0
- data/rbi/dodopayments/models/webhook_list_params.rbi +54 -0
- data/rbi/dodopayments/models/webhook_list_response.rbi +112 -0
- data/rbi/dodopayments/models/webhook_payload.rbi +440 -0
- data/rbi/dodopayments/models/webhook_retrieve_params.rbi +32 -0
- data/rbi/dodopayments/models/webhook_retrieve_response.rbi +112 -0
- data/rbi/dodopayments/models/webhook_update_params.rbi +94 -0
- data/rbi/dodopayments/models/webhook_update_response.rbi +112 -0
- data/rbi/dodopayments/models/webhooks/header_retrieve_params.rbi +34 -0
- data/rbi/dodopayments/models/webhooks/header_retrieve_response.rbi +50 -0
- data/rbi/dodopayments/models/webhooks/header_update_params.rbi +48 -0
- data/rbi/dodopayments/models/your_webhook_url_create_params.rbi +56 -0
- data/rbi/dodopayments/models.rbi +209 -0
- data/rbi/dodopayments/request_options.rbi +18 -7
- data/rbi/dodopayments/resources/addons.rbi +44 -27
- data/rbi/dodopayments/resources/brands.rbi +89 -0
- data/rbi/dodopayments/resources/customers/customer_portal.rbi +8 -6
- data/rbi/dodopayments/resources/customers.rbi +31 -17
- data/rbi/dodopayments/resources/discounts.rbi +54 -22
- data/rbi/dodopayments/resources/disputes.rbi +26 -14
- data/rbi/dodopayments/resources/invoices/payments.rbi +10 -3
- data/rbi/dodopayments/resources/invoices.rbi +2 -1
- data/rbi/dodopayments/resources/license_key_instances.rbi +25 -10
- data/rbi/dodopayments/resources/license_keys.rbi +29 -15
- data/rbi/dodopayments/resources/licenses.rbi +25 -12
- data/rbi/dodopayments/resources/misc.rbi +7 -4
- data/rbi/dodopayments/resources/payments.rbi +61 -27
- data/rbi/dodopayments/resources/payouts.rbi +12 -6
- data/rbi/dodopayments/resources/products/images.rbi +10 -4
- data/rbi/dodopayments/resources/products.rbi +118 -41
- data/rbi/dodopayments/resources/refunds.rbi +35 -15
- data/rbi/dodopayments/resources/subscriptions.rbi +98 -50
- data/rbi/dodopayments/resources/webhook_events.rbi +2 -34
- data/rbi/dodopayments/resources/webhooks/headers.rbi +40 -0
- data/rbi/dodopayments/resources/webhooks.rbi +127 -0
- data/rbi/dodopayments/resources/your_webhook_url.rbi +51 -0
- data/sig/dodopayments/client.rbs +8 -2
- data/sig/dodopayments/errors.rbs +9 -0
- data/sig/dodopayments/internal/cursor_page_pagination.rbs +15 -0
- data/sig/dodopayments/internal/transport/base_client.rbs +17 -2
- data/sig/dodopayments/internal/transport/pooled_net_requester.rbs +4 -0
- data/sig/dodopayments/internal/type/array_of.rbs +3 -0
- data/sig/dodopayments/internal/type/base_model.rbs +13 -5
- data/sig/dodopayments/internal/type/base_page.rbs +1 -1
- data/sig/dodopayments/internal/type/boolean.rbs +3 -0
- data/sig/dodopayments/internal/type/converter.rbs +26 -1
- data/sig/dodopayments/internal/type/enum.rbs +3 -0
- data/sig/dodopayments/internal/type/file_input.rbs +2 -0
- data/sig/dodopayments/internal/type/hash_of.rbs +3 -0
- data/sig/dodopayments/internal/type/request_parameters.rbs +5 -1
- data/sig/dodopayments/internal/type/union.rbs +5 -2
- data/sig/dodopayments/internal/type/unknown.rbs +3 -0
- data/sig/dodopayments/internal/util.rbs +27 -0
- data/sig/dodopayments/internal.rbs +4 -0
- data/sig/dodopayments/models/addon_cart_response_item.rbs +1 -1
- data/sig/dodopayments/models/addon_create_params.rbs +8 -1
- data/sig/dodopayments/models/addon_list_params.rbs +14 -6
- data/sig/dodopayments/models/addon_response.rbs +12 -1
- data/sig/dodopayments/models/addon_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/addon_update_images_params.rbs +1 -1
- data/sig/dodopayments/models/addon_update_images_response.rbs +1 -1
- data/sig/dodopayments/models/addon_update_params.rbs +9 -1
- data/sig/dodopayments/models/attach_addon.rbs +15 -0
- data/sig/dodopayments/models/attach_existing_customer.rbs +1 -1
- data/sig/dodopayments/models/billing_address.rbs +7 -1
- data/sig/dodopayments/models/brand.rbs +88 -0
- data/sig/dodopayments/models/brand_create_params.rbs +46 -0
- data/sig/dodopayments/models/{webhook_event_retrieve_params.rbs → brand_list_params.rbs} +3 -3
- data/sig/dodopayments/models/brand_list_response.rbs +13 -0
- data/sig/dodopayments/models/brand_retrieve_params.rbs +15 -0
- data/sig/dodopayments/models/brand_update_images_params.rbs +15 -0
- data/sig/dodopayments/models/brand_update_images_response.rbs +15 -0
- data/sig/dodopayments/models/brand_update_params.rbs +41 -0
- data/sig/dodopayments/models/create_new_customer.rbs +6 -1
- data/sig/dodopayments/models/customer.rbs +8 -1
- data/sig/dodopayments/models/customer_create_params.rbs +6 -1
- data/sig/dodopayments/models/customer_limited_details.rbs +1 -1
- data/sig/dodopayments/models/customer_list_params.rbs +20 -6
- data/sig/dodopayments/models/customer_portal_session.rbs +1 -1
- data/sig/dodopayments/models/customer_request.rbs +2 -3
- data/sig/dodopayments/models/customer_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/customer_update_params.rbs +5 -1
- data/sig/dodopayments/models/customers/customer_portal_create_params.rbs +9 -4
- data/sig/dodopayments/models/discount.rbs +18 -1
- data/sig/dodopayments/models/discount_create_params.rbs +15 -1
- data/sig/dodopayments/models/discount_delete_params.rbs +1 -1
- data/sig/dodopayments/models/discount_list_params.rbs +14 -6
- data/sig/dodopayments/models/discount_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/discount_update_params.rbs +15 -1
- data/sig/dodopayments/models/dispute.rbs +17 -3
- data/sig/dodopayments/models/dispute_list_params.rbs +84 -22
- data/sig/dodopayments/models/dispute_list_response.rbs +55 -0
- data/sig/dodopayments/models/dispute_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/get_dispute.rbs +70 -0
- data/sig/dodopayments/models/invoices/payment_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/license_activate_params.rbs +5 -1
- data/sig/dodopayments/models/license_deactivate_params.rbs +5 -1
- data/sig/dodopayments/models/license_key.rbs +14 -1
- data/sig/dodopayments/models/license_key_duration.rbs +4 -1
- data/sig/dodopayments/models/license_key_instance.rbs +7 -1
- data/sig/dodopayments/models/license_key_instance_list_params.rbs +6 -1
- data/sig/dodopayments/models/license_key_instance_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/license_key_instance_update_params.rbs +4 -1
- data/sig/dodopayments/models/license_key_list_params.rbs +47 -16
- data/sig/dodopayments/models/license_key_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/license_key_update_params.rbs +6 -1
- data/sig/dodopayments/models/license_validate_params.rbs +5 -1
- data/sig/dodopayments/models/license_validate_response.rbs +1 -1
- data/sig/dodopayments/models/misc_list_supported_countries_params.rbs +1 -1
- data/sig/dodopayments/models/new_customer.rbs +21 -0
- data/sig/dodopayments/models/one_time_product_cart_item.rbs +5 -1
- data/sig/dodopayments/models/payment.rbs +76 -17
- data/sig/dodopayments/models/payment_create_params.rbs +23 -55
- data/sig/dodopayments/models/payment_create_response.rbs +21 -7
- data/sig/dodopayments/models/payment_list_params.rbs +85 -22
- data/sig/dodopayments/models/payment_list_response.rbs +25 -4
- data/sig/dodopayments/models/payment_method_types.rbs +48 -0
- data/sig/dodopayments/models/payment_retrieve_line_items_params.rbs +15 -0
- data/sig/dodopayments/models/payment_retrieve_line_items_response.rbs +67 -0
- data/sig/dodopayments/models/payment_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/payout_list_params.rbs +14 -6
- data/sig/dodopayments/models/payout_list_response.rbs +17 -1
- data/sig/dodopayments/models/price.rbs +53 -13
- data/sig/dodopayments/models/product.rbs +80 -4
- data/sig/dodopayments/models/product_create_params.rbs +45 -4
- data/sig/dodopayments/models/product_delete_params.rbs +1 -1
- data/sig/dodopayments/models/product_list_params.rbs +29 -10
- data/sig/dodopayments/models/product_list_response.rbs +20 -1
- data/sig/dodopayments/models/product_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/product_unarchive_params.rbs +1 -1
- data/sig/dodopayments/models/product_update_files_params.rbs +23 -0
- data/sig/dodopayments/models/product_update_files_response.rbs +15 -0
- data/sig/dodopayments/models/product_update_params.rbs +58 -4
- data/sig/dodopayments/models/products/image_update_params.rbs +9 -4
- data/sig/dodopayments/models/products/image_update_response.rbs +1 -1
- data/sig/dodopayments/models/refund.rbs +15 -1
- data/sig/dodopayments/models/refund_create_params.rbs +38 -2
- data/sig/dodopayments/models/refund_list_params.rbs +54 -19
- data/sig/dodopayments/models/refund_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/subscription.rbs +43 -10
- data/sig/dodopayments/models/subscription_change_plan_params.rbs +16 -3
- data/sig/dodopayments/models/subscription_charge_params.rbs +27 -2
- data/sig/dodopayments/models/subscription_charge_response.rbs +1 -1
- data/sig/dodopayments/models/subscription_create_params.rbs +58 -73
- data/sig/dodopayments/models/subscription_create_response.rbs +26 -7
- data/sig/dodopayments/models/subscription_list_params.rbs +64 -19
- data/sig/dodopayments/models/subscription_list_response.rbs +39 -7
- data/sig/dodopayments/models/subscription_retrieve_params.rbs +1 -1
- data/sig/dodopayments/models/subscription_status.rbs +1 -2
- data/sig/dodopayments/models/subscription_update_params.rbs +20 -8
- data/sig/dodopayments/models/webhook_create_params.rbs +65 -0
- data/sig/dodopayments/models/webhook_create_response.rbs +60 -0
- data/sig/dodopayments/models/webhook_delete_params.rbs +15 -0
- data/sig/dodopayments/models/webhook_event_type.rbs +54 -0
- data/sig/dodopayments/models/webhook_list_params.rbs +28 -0
- data/sig/dodopayments/models/webhook_list_response.rbs +60 -0
- data/sig/dodopayments/models/webhook_payload.rbs +203 -0
- data/sig/dodopayments/models/webhook_retrieve_params.rbs +15 -0
- data/sig/dodopayments/models/webhook_retrieve_response.rbs +60 -0
- data/sig/dodopayments/models/webhook_update_params.rbs +51 -0
- data/sig/dodopayments/models/webhook_update_response.rbs +60 -0
- data/sig/dodopayments/models/webhooks/header_retrieve_params.rbs +17 -0
- data/sig/dodopayments/models/webhooks/header_retrieve_response.rbs +24 -0
- data/sig/dodopayments/models/webhooks/header_update_params.rbs +26 -0
- data/sig/dodopayments/models/your_webhook_url_create_params.rbs +42 -0
- data/sig/dodopayments/models.rbs +201 -0
- data/sig/dodopayments/request_options.rbs +1 -1
- data/sig/dodopayments/resources/addons.rbs +6 -6
- data/sig/dodopayments/resources/brands.rbs +39 -0
- data/sig/dodopayments/resources/customers/customer_portal.rbs +2 -2
- data/sig/dodopayments/resources/customers.rbs +7 -6
- data/sig/dodopayments/resources/discounts.rbs +8 -6
- data/sig/dodopayments/resources/disputes.rbs +9 -9
- data/sig/dodopayments/resources/invoices/payments.rbs +1 -1
- data/sig/dodopayments/resources/license_key_instances.rbs +3 -3
- data/sig/dodopayments/resources/license_keys.rbs +8 -8
- data/sig/dodopayments/resources/licenses.rbs +1 -1
- data/sig/dodopayments/resources/payments.rbs +17 -11
- data/sig/dodopayments/resources/payouts.rbs +2 -2
- data/sig/dodopayments/resources/products/images.rbs +1 -1
- data/sig/dodopayments/resources/products.rbs +20 -7
- data/sig/dodopayments/resources/refunds.rbs +10 -9
- data/sig/dodopayments/resources/subscriptions.rbs +21 -14
- data/sig/dodopayments/resources/webhook_events.rbs +0 -15
- data/sig/dodopayments/resources/webhooks/headers.rbs +20 -0
- data/sig/dodopayments/resources/webhooks.rbs +48 -0
- data/sig/dodopayments/resources/your_webhook_url.rbs +18 -0
- metadata +116 -11
- data/lib/dodopayments/models/webhook_event.rb +0 -58
- data/lib/dodopayments/models/webhook_event_list_params.rb +0 -66
- data/rbi/dodopayments/models/webhook_event.rbi +0 -71
- data/rbi/dodopayments/models/webhook_event_list_params.rbi +0 -77
- data/rbi/dodopayments/models/webhook_event_retrieve_params.rbi +0 -19
- data/sig/dodopayments/models/webhook_event.rbs +0 -46
- data/sig/dodopayments/models/webhook_event_list_params.rbs +0 -43
@@ -7,6 +7,8 @@ module Dodopayments
|
|
7
7
|
#
|
8
8
|
# @abstract
|
9
9
|
class BaseClient
|
10
|
+
extend Dodopayments::Internal::Util::SorbetRuntimeSupport
|
11
|
+
|
10
12
|
# from whatwg fetch spec
|
11
13
|
MAX_REDIRECTS = 20
|
12
14
|
|
@@ -151,6 +153,27 @@ module Dodopayments
|
|
151
153
|
end
|
152
154
|
end
|
153
155
|
|
156
|
+
# @return [URI::Generic]
|
157
|
+
attr_reader :base_url
|
158
|
+
|
159
|
+
# @return [Float]
|
160
|
+
attr_reader :timeout
|
161
|
+
|
162
|
+
# @return [Integer]
|
163
|
+
attr_reader :max_retries
|
164
|
+
|
165
|
+
# @return [Float]
|
166
|
+
attr_reader :initial_retry_delay
|
167
|
+
|
168
|
+
# @return [Float]
|
169
|
+
attr_reader :max_retry_delay
|
170
|
+
|
171
|
+
# @return [Hash{String=>String}]
|
172
|
+
attr_reader :headers
|
173
|
+
|
174
|
+
# @return [String, nil]
|
175
|
+
attr_reader :idempotency_header
|
176
|
+
|
154
177
|
# @api private
|
155
178
|
# @return [Dodopayments::Internal::Transport::PooledNetRequester]
|
156
179
|
attr_reader :requester
|
@@ -182,10 +205,11 @@ module Dodopayments
|
|
182
205
|
},
|
183
206
|
headers
|
184
207
|
)
|
185
|
-
@
|
208
|
+
@base_url_components = Dodopayments::Internal::Util.parse_uri(base_url)
|
209
|
+
@base_url = Dodopayments::Internal::Util.unparse_uri(@base_url_components)
|
186
210
|
@idempotency_header = idempotency_header&.to_s&.downcase
|
187
|
-
@max_retries = max_retries
|
188
211
|
@timeout = timeout
|
212
|
+
@max_retries = max_retries
|
189
213
|
@initial_retry_delay = initial_retry_delay
|
190
214
|
@max_retry_delay = max_retry_delay
|
191
215
|
end
|
@@ -276,10 +300,14 @@ module Dodopayments
|
|
276
300
|
Dodopayments::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
|
277
301
|
end
|
278
302
|
|
303
|
+
url = Dodopayments::Internal::Util.join_parsed_uri(
|
304
|
+
@base_url_components,
|
305
|
+
{**req, path: path, query: query}
|
306
|
+
)
|
279
307
|
headers, encoded = Dodopayments::Internal::Util.encode_content(headers, body)
|
280
308
|
{
|
281
309
|
method: method,
|
282
|
-
url:
|
310
|
+
url: url,
|
283
311
|
headers: headers,
|
284
312
|
body: encoded,
|
285
313
|
max_retries: opts.fetch(:max_retries, @max_retries),
|
@@ -337,7 +365,7 @@ module Dodopayments
|
|
337
365
|
#
|
338
366
|
# @raise [Dodopayments::Errors::APIError]
|
339
367
|
# @return [Array(Integer, Net::HTTPResponse, Enumerable<String>)]
|
340
|
-
|
368
|
+
def send_request(request, redirect_count:, retry_count:, send_retry_header:)
|
341
369
|
url, headers, max_retries, timeout = request.fetch_values(:url, :headers, :max_retries, :timeout)
|
342
370
|
input = {
|
343
371
|
**request.except(:timeout),
|
@@ -446,6 +474,7 @@ module Dodopayments
|
|
446
474
|
self.class.validate!(req)
|
447
475
|
model = req.fetch(:model) { Dodopayments::Internal::Type::Unknown }
|
448
476
|
opts = req[:options].to_h
|
477
|
+
unwrap = req[:unwrap]
|
449
478
|
Dodopayments::RequestOptions.validate!(opts)
|
450
479
|
request = build_request(req.except(:options), opts)
|
451
480
|
url = request.fetch(:url)
|
@@ -461,12 +490,19 @@ module Dodopayments
|
|
461
490
|
|
462
491
|
decoded = Dodopayments::Internal::Util.decode_content(response, stream: stream)
|
463
492
|
case req
|
464
|
-
in {
|
465
|
-
st.new(
|
466
|
-
|
493
|
+
in {stream: Class => st}
|
494
|
+
st.new(
|
495
|
+
model: model,
|
496
|
+
url: url,
|
497
|
+
status: status,
|
498
|
+
response: response,
|
499
|
+
unwrap: unwrap,
|
500
|
+
stream: decoded
|
501
|
+
)
|
502
|
+
in {page: Class => page}
|
467
503
|
page.new(client: self, req: req, headers: response, page_data: decoded)
|
468
504
|
else
|
469
|
-
unwrapped = Dodopayments::Internal::Util.dig(decoded,
|
505
|
+
unwrapped = Dodopayments::Internal::Util.dig(decoded, unwrap)
|
470
506
|
Dodopayments::Internal::Type::Converter.coerce(model, unwrapped)
|
471
507
|
end
|
472
508
|
end
|
@@ -476,10 +512,54 @@ module Dodopayments
|
|
476
512
|
# @return [String]
|
477
513
|
def inspect
|
478
514
|
# rubocop:disable Layout/LineLength
|
479
|
-
base_url
|
480
|
-
"#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
|
515
|
+
"#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{@base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
|
481
516
|
# rubocop:enable Layout/LineLength
|
482
517
|
end
|
518
|
+
|
519
|
+
define_sorbet_constant!(:RequestComponents) do
|
520
|
+
T.type_alias do
|
521
|
+
{
|
522
|
+
method: Symbol,
|
523
|
+
path: T.any(String, T::Array[String]),
|
524
|
+
query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
|
525
|
+
headers: T.nilable(
|
526
|
+
T::Hash[String,
|
527
|
+
T.nilable(
|
528
|
+
T.any(
|
529
|
+
String,
|
530
|
+
Integer,
|
531
|
+
T::Array[T.nilable(T.any(String, Integer))]
|
532
|
+
)
|
533
|
+
)]
|
534
|
+
),
|
535
|
+
body: T.nilable(T.anything),
|
536
|
+
unwrap: T.nilable(
|
537
|
+
T.any(
|
538
|
+
Symbol,
|
539
|
+
Integer,
|
540
|
+
T::Array[T.any(Symbol, Integer)],
|
541
|
+
T.proc.params(arg0: T.anything).returns(T.anything)
|
542
|
+
)
|
543
|
+
),
|
544
|
+
page: T.nilable(T::Class[Dodopayments::Internal::Type::BasePage[Dodopayments::Internal::Type::BaseModel]]),
|
545
|
+
stream: T.nilable(T::Class[T.anything]),
|
546
|
+
model: T.nilable(Dodopayments::Internal::Type::Converter::Input),
|
547
|
+
options: T.nilable(Dodopayments::RequestOptions::OrHash)
|
548
|
+
}
|
549
|
+
end
|
550
|
+
end
|
551
|
+
define_sorbet_constant!(:RequestInput) do
|
552
|
+
T.type_alias do
|
553
|
+
{
|
554
|
+
method: Symbol,
|
555
|
+
url: URI::Generic,
|
556
|
+
headers: T::Hash[String, String],
|
557
|
+
body: T.anything,
|
558
|
+
max_retries: Integer,
|
559
|
+
timeout: Float
|
560
|
+
}
|
561
|
+
end
|
562
|
+
end
|
483
563
|
end
|
484
564
|
end
|
485
565
|
end
|
@@ -5,10 +5,14 @@ module Dodopayments
|
|
5
5
|
module Transport
|
6
6
|
# @api private
|
7
7
|
class PooledNetRequester
|
8
|
+
extend Dodopayments::Internal::Util::SorbetRuntimeSupport
|
9
|
+
|
8
10
|
# from the golang stdlib
|
9
11
|
# https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
|
10
12
|
KEEP_ALIVE_TIMEOUT = 30
|
11
13
|
|
14
|
+
DEFAULT_MAX_CONNECTIONS = [Etc.nprocessors, 99].max
|
15
|
+
|
12
16
|
class << self
|
13
17
|
# @api private
|
14
18
|
#
|
@@ -182,11 +186,23 @@ module Dodopayments
|
|
182
186
|
# @api private
|
183
187
|
#
|
184
188
|
# @param size [Integer]
|
185
|
-
def initialize(size:
|
189
|
+
def initialize(size: self.class::DEFAULT_MAX_CONNECTIONS)
|
186
190
|
@mutex = Mutex.new
|
187
191
|
@size = size
|
188
192
|
@pools = {}
|
189
193
|
end
|
194
|
+
|
195
|
+
define_sorbet_constant!(:Request) do
|
196
|
+
T.type_alias do
|
197
|
+
{
|
198
|
+
method: Symbol,
|
199
|
+
url: URI::Generic,
|
200
|
+
headers: T::Hash[String, String],
|
201
|
+
body: T.anything,
|
202
|
+
deadline: Float
|
203
|
+
}
|
204
|
+
end
|
205
|
+
end
|
190
206
|
end
|
191
207
|
end
|
192
208
|
end
|
@@ -12,6 +12,7 @@ module Dodopayments
|
|
12
12
|
# Array of items of a given type.
|
13
13
|
class ArrayOf
|
14
14
|
include Dodopayments::Internal::Type::Converter
|
15
|
+
include Dodopayments::Internal::Util::SorbetRuntimeSupport
|
15
16
|
|
16
17
|
private_class_method :new
|
17
18
|
|
@@ -29,7 +30,7 @@ module Dodopayments
|
|
29
30
|
#
|
30
31
|
# @option spec [Boolean] :"nil?"
|
31
32
|
#
|
32
|
-
# @return [
|
33
|
+
# @return [self]
|
33
34
|
def self.[](...) = new(...)
|
34
35
|
|
35
36
|
# @api public
|
@@ -61,10 +62,14 @@ module Dodopayments
|
|
61
62
|
#
|
62
63
|
# @param state [Hash{Symbol=>Object}] .
|
63
64
|
#
|
64
|
-
# @option state [Boolean
|
65
|
+
# @option state [Boolean] :translate_names
|
66
|
+
#
|
67
|
+
# @option state [Boolean] :strictness
|
65
68
|
#
|
66
69
|
# @option state [Hash{Symbol=>Object}] :exactness
|
67
70
|
#
|
71
|
+
# @option state [Class<StandardError>] :error
|
72
|
+
#
|
68
73
|
# @option state [Integer] :branched
|
69
74
|
#
|
70
75
|
# @return [Array<Object>, Object]
|
@@ -73,6 +78,7 @@ module Dodopayments
|
|
73
78
|
|
74
79
|
unless value.is_a?(Array)
|
75
80
|
exactness[:no] += 1
|
81
|
+
state[:error] = TypeError.new("#{value.class} can't be coerced into #{Array}")
|
76
82
|
return value
|
77
83
|
end
|
78
84
|
|
@@ -110,6 +116,13 @@ module Dodopayments
|
|
110
116
|
end
|
111
117
|
end
|
112
118
|
|
119
|
+
# @api private
|
120
|
+
#
|
121
|
+
# @return [Object]
|
122
|
+
def to_sorbet_type
|
123
|
+
T::Array[Dodopayments::Internal::Util::SorbetRuntimeSupport.to_sorbet_type(item_type)]
|
124
|
+
end
|
125
|
+
|
113
126
|
# @api private
|
114
127
|
#
|
115
128
|
# @return [generic<Elem>]
|
@@ -135,6 +148,7 @@ module Dodopayments
|
|
135
148
|
# @option spec [Boolean] :"nil?"
|
136
149
|
def initialize(type_info, spec = {})
|
137
150
|
@item_type_fn = Dodopayments::Internal::Type::Converter.type_info(type_info || spec)
|
151
|
+
@meta = Dodopayments::Internal::Type::Converter.meta_info(type_info, spec)
|
138
152
|
@nilable = spec.fetch(:nil?, false)
|
139
153
|
end
|
140
154
|
|
@@ -6,6 +6,7 @@ module Dodopayments
|
|
6
6
|
# @abstract
|
7
7
|
class BaseModel
|
8
8
|
extend Dodopayments::Internal::Type::Converter
|
9
|
+
extend Dodopayments::Internal::Util::SorbetRuntimeSupport
|
9
10
|
|
10
11
|
class << self
|
11
12
|
# @api private
|
@@ -13,11 +14,17 @@ module Dodopayments
|
|
13
14
|
# Assumes superclass fields are totally defined before fields are accessed /
|
14
15
|
# defined on subclasses.
|
15
16
|
#
|
16
|
-
# @
|
17
|
-
def
|
18
|
-
|
17
|
+
# @param child [Class<Dodopayments::Internal::Type::BaseModel>]
|
18
|
+
def inherited(child)
|
19
|
+
super
|
20
|
+
child.known_fields.replace(known_fields.dup)
|
19
21
|
end
|
20
22
|
|
23
|
+
# @api private
|
24
|
+
#
|
25
|
+
# @return [Hash{Symbol=>Hash{Symbol=>Object}}]
|
26
|
+
def known_fields = @known_fields ||= {}
|
27
|
+
|
21
28
|
# @api private
|
22
29
|
#
|
23
30
|
# @return [Hash{Symbol=>Hash{Symbol=>Object}}]
|
@@ -45,6 +52,7 @@ module Dodopayments
|
|
45
52
|
#
|
46
53
|
# @option spec [Boolean] :"nil?"
|
47
54
|
private def add_field(name_sym, required:, type_info:, spec:)
|
55
|
+
meta = Dodopayments::Internal::Type::Converter.meta_info(type_info, spec)
|
48
56
|
type_fn, info =
|
49
57
|
case type_info
|
50
58
|
in Proc | Dodopayments::Internal::Type::Converter | Class
|
@@ -53,7 +61,7 @@ module Dodopayments
|
|
53
61
|
[Dodopayments::Internal::Type::Converter.type_info(type_info), type_info]
|
54
62
|
end
|
55
63
|
|
56
|
-
setter = "#{name_sym}="
|
64
|
+
setter = :"#{name_sym}="
|
57
65
|
api_name = info.fetch(:api_name, name_sym)
|
58
66
|
nilable = info.fetch(:nil?, false)
|
59
67
|
const = if required && !nilable
|
@@ -74,31 +82,65 @@ module Dodopayments
|
|
74
82
|
required: required,
|
75
83
|
nilable: nilable,
|
76
84
|
const: const,
|
77
|
-
type_fn: type_fn
|
85
|
+
type_fn: type_fn,
|
86
|
+
meta: meta
|
78
87
|
}
|
79
88
|
|
80
|
-
define_method(setter)
|
89
|
+
define_method(setter) do |value|
|
90
|
+
target = type_fn.call
|
91
|
+
state = Dodopayments::Internal::Type::Converter.new_coerce_state(translate_names: false)
|
92
|
+
coerced = Dodopayments::Internal::Type::Converter.coerce(target, value, state: state)
|
93
|
+
status = @coerced.store(name_sym, state.fetch(:error) || true)
|
94
|
+
stored =
|
95
|
+
case [target, status]
|
96
|
+
in [Dodopayments::Internal::Type::Converter | Symbol, true]
|
97
|
+
coerced
|
98
|
+
else
|
99
|
+
value
|
100
|
+
end
|
101
|
+
@data.store(name_sym, stored)
|
102
|
+
end
|
81
103
|
|
104
|
+
# rubocop:disable Style/CaseEquality
|
105
|
+
# rubocop:disable Metrics/BlockLength
|
82
106
|
define_method(name_sym) do
|
83
107
|
target = type_fn.call
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
Dodopayments::
|
90
|
-
|
108
|
+
|
109
|
+
case @coerced[name_sym]
|
110
|
+
in true | false if Dodopayments::Internal::Type::Converter === target
|
111
|
+
@data.fetch(name_sym)
|
112
|
+
in ::StandardError => e
|
113
|
+
raise Dodopayments::Errors::ConversionError.new(
|
114
|
+
on: self.class,
|
115
|
+
method: __method__,
|
116
|
+
target: target,
|
117
|
+
value: @data.fetch(name_sym),
|
118
|
+
cause: e
|
91
119
|
)
|
120
|
+
else
|
121
|
+
Kernel.then do
|
122
|
+
value = @data.fetch(name_sym) { const == Dodopayments::Internal::OMIT ? nil : const }
|
123
|
+
state = Dodopayments::Internal::Type::Converter.new_coerce_state(translate_names: false)
|
124
|
+
if (nilable || !required) && value.nil?
|
125
|
+
nil
|
126
|
+
else
|
127
|
+
Dodopayments::Internal::Type::Converter.coerce(
|
128
|
+
target, value, state: state
|
129
|
+
)
|
130
|
+
end
|
131
|
+
rescue StandardError => e
|
132
|
+
raise Dodopayments::Errors::ConversionError.new(
|
133
|
+
on: self.class,
|
134
|
+
method: __method__,
|
135
|
+
target: target,
|
136
|
+
value: value,
|
137
|
+
cause: e
|
138
|
+
)
|
139
|
+
end
|
92
140
|
end
|
93
|
-
rescue StandardError => e
|
94
|
-
cls = self.class.name.split("::").last
|
95
|
-
message = [
|
96
|
-
"Failed to parse #{cls}.#{__method__} from #{value.class} to #{target.inspect}.",
|
97
|
-
"To get the unparsed API response, use #{cls}[#{__method__.inspect}].",
|
98
|
-
"Cause: #{e.message}"
|
99
|
-
].join(" ")
|
100
|
-
raise Dodopayments::Errors::ConversionError.new(message)
|
101
141
|
end
|
142
|
+
# rubocop:enable Metrics/BlockLength
|
143
|
+
# rubocop:enable Style/CaseEquality
|
102
144
|
end
|
103
145
|
|
104
146
|
# @api private
|
@@ -198,23 +240,28 @@ module Dodopayments
|
|
198
240
|
#
|
199
241
|
# @param state [Hash{Symbol=>Object}] .
|
200
242
|
#
|
201
|
-
# @option state [Boolean
|
243
|
+
# @option state [Boolean] :translate_names
|
244
|
+
#
|
245
|
+
# @option state [Boolean] :strictness
|
202
246
|
#
|
203
247
|
# @option state [Hash{Symbol=>Object}] :exactness
|
204
248
|
#
|
249
|
+
# @option state [Class<StandardError>] :error
|
250
|
+
#
|
205
251
|
# @option state [Integer] :branched
|
206
252
|
#
|
207
|
-
# @return [
|
253
|
+
# @return [self, Object]
|
208
254
|
def coerce(value, state:)
|
209
255
|
exactness = state.fetch(:exactness)
|
210
256
|
|
211
|
-
if value.is_a?(self
|
257
|
+
if value.is_a?(self)
|
212
258
|
exactness[:yes] += 1
|
213
259
|
return value
|
214
260
|
end
|
215
261
|
|
216
262
|
unless (val = Dodopayments::Internal::Util.coerce_hash(value)).is_a?(Hash)
|
217
263
|
exactness[:no] += 1
|
264
|
+
state[:error] = TypeError.new("#{value.class} can't be coerced into #{Hash}")
|
218
265
|
return value
|
219
266
|
end
|
220
267
|
exactness[:yes] += 1
|
@@ -222,13 +269,15 @@ module Dodopayments
|
|
222
269
|
keys = val.keys.to_set
|
223
270
|
instance = new
|
224
271
|
data = instance.to_h
|
272
|
+
status = instance.instance_variable_get(:@coerced)
|
225
273
|
|
226
274
|
# rubocop:disable Metrics/BlockLength
|
227
275
|
fields.each do |name, field|
|
228
276
|
mode, required, target = field.fetch_values(:mode, :required, :type)
|
229
277
|
api_name, nilable, const = field.fetch_values(:api_name, :nilable, :const)
|
278
|
+
src_name = state.fetch(:translate_names) ? api_name : name
|
230
279
|
|
231
|
-
unless val.key?(
|
280
|
+
unless val.key?(src_name)
|
232
281
|
if required && mode != :dump && const == Dodopayments::Internal::OMIT
|
233
282
|
exactness[nilable ? :maybe : :no] += 1
|
234
283
|
else
|
@@ -237,9 +286,10 @@ module Dodopayments
|
|
237
286
|
next
|
238
287
|
end
|
239
288
|
|
240
|
-
item = val.fetch(
|
241
|
-
keys.delete(
|
289
|
+
item = val.fetch(src_name)
|
290
|
+
keys.delete(src_name)
|
242
291
|
|
292
|
+
state[:error] = nil
|
243
293
|
converted =
|
244
294
|
if item.nil? && (nilable || !required)
|
245
295
|
exactness[nilable ? :yes : :maybe] += 1
|
@@ -253,6 +303,8 @@ module Dodopayments
|
|
253
303
|
item
|
254
304
|
end
|
255
305
|
end
|
306
|
+
|
307
|
+
status.store(name, state.fetch(:error) || true)
|
256
308
|
data.store(name, converted)
|
257
309
|
end
|
258
310
|
# rubocop:enable Metrics/BlockLength
|
@@ -263,7 +315,7 @@ module Dodopayments
|
|
263
315
|
|
264
316
|
# @api private
|
265
317
|
#
|
266
|
-
# @param value [
|
318
|
+
# @param value [self, Object]
|
267
319
|
#
|
268
320
|
# @param state [Hash{Symbol=>Object}] .
|
269
321
|
#
|
@@ -302,6 +354,46 @@ module Dodopayments
|
|
302
354
|
|
303
355
|
acc
|
304
356
|
end
|
357
|
+
|
358
|
+
# @api private
|
359
|
+
#
|
360
|
+
# @return [Object]
|
361
|
+
def to_sorbet_type
|
362
|
+
self
|
363
|
+
end
|
364
|
+
end
|
365
|
+
|
366
|
+
class << self
|
367
|
+
# @api private
|
368
|
+
#
|
369
|
+
# @param model [Dodopayments::Internal::Type::BaseModel]
|
370
|
+
# @param convert [Boolean]
|
371
|
+
#
|
372
|
+
# @return [Hash{Symbol=>Object}]
|
373
|
+
def recursively_to_h(model, convert:)
|
374
|
+
rec = ->(x) do
|
375
|
+
case x
|
376
|
+
in Dodopayments::Internal::Type::BaseModel
|
377
|
+
if convert
|
378
|
+
fields = x.class.known_fields
|
379
|
+
x.to_h.to_h do |key, val|
|
380
|
+
[key, rec.call(fields.key?(key) ? x.public_send(key) : val)]
|
381
|
+
rescue Dodopayments::Errors::ConversionError
|
382
|
+
[key, rec.call(val)]
|
383
|
+
end
|
384
|
+
else
|
385
|
+
rec.call(x.to_h)
|
386
|
+
end
|
387
|
+
in Hash
|
388
|
+
x.transform_values(&rec)
|
389
|
+
in Array
|
390
|
+
x.map(&rec)
|
391
|
+
else
|
392
|
+
x
|
393
|
+
end
|
394
|
+
end
|
395
|
+
rec.call(model)
|
396
|
+
end
|
305
397
|
end
|
306
398
|
|
307
399
|
# @api public
|
@@ -340,9 +432,23 @@ module Dodopayments
|
|
340
432
|
|
341
433
|
alias_method :to_hash, :to_h
|
342
434
|
|
435
|
+
# @api public
|
436
|
+
#
|
437
|
+
# In addition to the behaviour of `#to_h`, this method will recursively call
|
438
|
+
# `#to_h` on nested models.
|
439
|
+
#
|
440
|
+
# @return [Hash{Symbol=>Object}]
|
441
|
+
def deep_to_h = self.class.recursively_to_h(@data, convert: false)
|
442
|
+
|
343
443
|
# @param keys [Array<Symbol>, nil]
|
344
444
|
#
|
345
445
|
# @return [Hash{Symbol=>Object}]
|
446
|
+
#
|
447
|
+
# @example
|
448
|
+
# # `attach_existing_customer` is a `Dodopayments::AttachExistingCustomer`
|
449
|
+
# attach_existing_customer => {
|
450
|
+
# customer_id: customer_id
|
451
|
+
# }
|
346
452
|
def deconstruct_keys(keys)
|
347
453
|
(keys || self.class.known_fields.keys)
|
348
454
|
.filter_map do |k|
|
@@ -355,29 +461,6 @@ module Dodopayments
|
|
355
461
|
.to_h
|
356
462
|
end
|
357
463
|
|
358
|
-
class << self
|
359
|
-
# @api private
|
360
|
-
#
|
361
|
-
# @param model [Dodopayments::Internal::Type::BaseModel]
|
362
|
-
#
|
363
|
-
# @return [Hash{Symbol=>Object}]
|
364
|
-
def walk(model)
|
365
|
-
walk = ->(x) do
|
366
|
-
case x
|
367
|
-
in Dodopayments::Internal::Type::BaseModel
|
368
|
-
walk.call(x.to_h)
|
369
|
-
in Hash
|
370
|
-
x.transform_values(&walk)
|
371
|
-
in Array
|
372
|
-
x.map(&walk)
|
373
|
-
else
|
374
|
-
x
|
375
|
-
end
|
376
|
-
end
|
377
|
-
walk.call(model)
|
378
|
-
end
|
379
|
-
end
|
380
|
-
|
381
464
|
# @api public
|
382
465
|
#
|
383
466
|
# @param a [Object]
|
@@ -396,12 +479,15 @@ module Dodopayments
|
|
396
479
|
#
|
397
480
|
# @param data [Hash{Symbol=>Object}, self]
|
398
481
|
def initialize(data = {})
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
482
|
+
@data = {}
|
483
|
+
@coerced = {}
|
484
|
+
Dodopayments::Internal::Util.coerce_hash!(data).each do
|
485
|
+
if self.class.known_fields.key?(_1)
|
486
|
+
public_send(:"#{_1}=", _2)
|
487
|
+
else
|
488
|
+
@data.store(_1, _2)
|
489
|
+
@coerced.store(_1, false)
|
490
|
+
end
|
405
491
|
end
|
406
492
|
end
|
407
493
|
|
@@ -431,12 +517,19 @@ module Dodopayments
|
|
431
517
|
# @api public
|
432
518
|
#
|
433
519
|
# @return [String]
|
434
|
-
def to_s =
|
520
|
+
def to_s = deep_to_h.to_s
|
435
521
|
|
436
522
|
# @api private
|
437
523
|
#
|
438
524
|
# @return [String]
|
439
|
-
def inspect
|
525
|
+
def inspect
|
526
|
+
converted = self.class.recursively_to_h(self, convert: true)
|
527
|
+
"#<#{self.class}:0x#{object_id.to_s(16)} #{converted}>"
|
528
|
+
end
|
529
|
+
|
530
|
+
define_sorbet_constant!(:KnownField) do
|
531
|
+
T.type_alias { {mode: T.nilable(Symbol), required: T::Boolean, nilable: T::Boolean} }
|
532
|
+
end
|
440
533
|
end
|
441
534
|
end
|
442
535
|
end
|
@@ -10,6 +10,7 @@ module Dodopayments
|
|
10
10
|
# Ruby has no Boolean class; this is something for models to refer to.
|
11
11
|
class Boolean
|
12
12
|
extend Dodopayments::Internal::Type::Converter
|
13
|
+
extend Dodopayments::Internal::Util::SorbetRuntimeSupport
|
13
14
|
|
14
15
|
private_class_method :new
|
15
16
|
|
@@ -30,14 +31,20 @@ module Dodopayments
|
|
30
31
|
class << self
|
31
32
|
# @api private
|
32
33
|
#
|
34
|
+
# Coerce value to Boolean if possible, otherwise return the original value.
|
35
|
+
#
|
33
36
|
# @param value [Boolean, Object]
|
34
37
|
#
|
35
38
|
# @param state [Hash{Symbol=>Object}] .
|
36
39
|
#
|
37
|
-
# @option state [Boolean
|
40
|
+
# @option state [Boolean] :translate_names
|
41
|
+
#
|
42
|
+
# @option state [Boolean] :strictness
|
38
43
|
#
|
39
44
|
# @option state [Hash{Symbol=>Object}] :exactness
|
40
45
|
#
|
46
|
+
# @option state [Class<StandardError>] :error
|
47
|
+
#
|
41
48
|
# @option state [Integer] :branched
|
42
49
|
#
|
43
50
|
# @return [Boolean, Object]
|
@@ -56,6 +63,13 @@ module Dodopayments
|
|
56
63
|
# @option state [Boolean] :can_retry
|
57
64
|
#
|
58
65
|
# @return [Boolean, Object]
|
66
|
+
|
67
|
+
# @api private
|
68
|
+
#
|
69
|
+
# @return [Object]
|
70
|
+
def to_sorbet_type
|
71
|
+
T::Boolean
|
72
|
+
end
|
59
73
|
end
|
60
74
|
end
|
61
75
|
end
|