dodopayments 0.0.1.pre.alpha.0 → 1.14.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 +111 -0
- data/README.md +84 -23
- data/SECURITY.md +27 -0
- data/lib/dodopayments/client.rb +14 -19
- data/lib/dodopayments/errors.rb +168 -159
- data/lib/dodopayments/internal/default_page_number_pagination.rb +91 -0
- data/lib/dodopayments/internal/transport/base_client.rb +486 -0
- data/lib/dodopayments/internal/transport/pooled_net_requester.rb +193 -0
- data/lib/dodopayments/internal/type/array_of.rb +143 -0
- data/lib/dodopayments/internal/type/base_model.rb +407 -0
- data/lib/dodopayments/internal/type/base_page.rb +47 -0
- data/lib/dodopayments/internal/type/boolean.rb +60 -0
- data/lib/dodopayments/internal/type/converter.rb +271 -0
- data/lib/dodopayments/internal/type/enum.rb +129 -0
- data/lib/dodopayments/internal/type/hash_of.rb +163 -0
- data/lib/dodopayments/internal/type/io_like.rb +77 -0
- data/lib/dodopayments/internal/type/request_parameters.rb +49 -0
- data/lib/dodopayments/internal/type/union.rb +232 -0
- data/lib/dodopayments/internal/type/unknown.rb +64 -0
- data/lib/dodopayments/internal/util.rb +782 -0
- data/lib/dodopayments/internal.rb +12 -0
- data/lib/dodopayments/models/attach_existing_customer.rb +2 -2
- data/lib/dodopayments/models/billing_address.rb +2 -2
- data/lib/dodopayments/models/country_code.rb +7 -3
- data/lib/dodopayments/models/create_new_customer.rb +5 -5
- data/lib/dodopayments/models/customer.rb +3 -2
- data/lib/dodopayments/models/customer_create_params.rb +5 -4
- data/lib/dodopayments/models/customer_limited_details.rb +2 -2
- data/lib/dodopayments/models/customer_list_params.rb +5 -4
- data/lib/dodopayments/models/customer_portal_session.rb +2 -2
- data/lib/dodopayments/models/customer_request.rb +5 -6
- data/lib/dodopayments/models/customer_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/customer_update_params.rb +5 -4
- data/lib/dodopayments/models/customers/customer_portal_create_params.rb +6 -5
- data/lib/dodopayments/models/discount.rb +7 -6
- data/lib/dodopayments/models/discount_create_params.rb +13 -12
- data/lib/dodopayments/models/discount_delete_params.rb +5 -4
- data/lib/dodopayments/models/discount_list_params.rb +5 -4
- data/lib/dodopayments/models/discount_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/discount_type.rb +7 -2
- data/lib/dodopayments/models/discount_update_params.rb +11 -10
- data/lib/dodopayments/models/dispute.rb +4 -3
- data/lib/dodopayments/models/dispute_list_params.rb +5 -4
- data/lib/dodopayments/models/dispute_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/dispute_stage.rb +7 -2
- data/lib/dodopayments/models/dispute_status.rb +7 -2
- data/lib/dodopayments/models/intent_status.rb +7 -2
- data/lib/dodopayments/models/invoices/payment_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/license_activate_params.rb +5 -4
- data/lib/dodopayments/models/license_deactivate_params.rb +5 -4
- data/lib/dodopayments/models/license_key.rb +4 -3
- data/lib/dodopayments/models/license_key_duration.rb +2 -2
- data/lib/dodopayments/models/license_key_instance.rb +3 -2
- data/lib/dodopayments/models/license_key_instance_list_params.rb +5 -4
- data/lib/dodopayments/models/license_key_instance_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/license_key_instance_update_params.rb +5 -4
- data/lib/dodopayments/models/license_key_list_params.rb +5 -4
- data/lib/dodopayments/models/license_key_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/license_key_status.rb +7 -2
- data/lib/dodopayments/models/license_key_update_params.rb +9 -8
- data/lib/dodopayments/models/license_validate_params.rb +5 -4
- data/lib/dodopayments/models/license_validate_response.rb +4 -3
- data/lib/dodopayments/models/misc_list_supported_countries_params.rb +5 -4
- data/lib/dodopayments/models/misc_list_supported_countries_response.rb +2 -1
- data/lib/dodopayments/models/one_time_product_cart_item.rb +4 -3
- data/lib/dodopayments/models/payment.rb +18 -11
- data/lib/dodopayments/models/payment_create_params.rb +231 -9
- data/lib/dodopayments/models/payment_create_response.rb +6 -5
- data/lib/dodopayments/models/payment_list_params.rb +5 -4
- data/lib/dodopayments/models/payment_list_response.rb +12 -5
- data/lib/dodopayments/models/payment_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/payout_list_params.rb +5 -4
- data/lib/dodopayments/models/payout_list_response.rb +21 -6
- data/lib/dodopayments/models/price.rb +41 -30
- data/lib/dodopayments/models/product.rb +17 -10
- data/lib/dodopayments/models/product_create_params.rb +16 -11
- data/lib/dodopayments/models/product_delete_params.rb +5 -4
- data/lib/dodopayments/models/product_list_params.rb +10 -9
- data/lib/dodopayments/models/product_list_response.rb +30 -17
- data/lib/dodopayments/models/product_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/product_unarchive_params.rb +5 -4
- data/lib/dodopayments/models/product_update_params.rb +22 -17
- data/lib/dodopayments/models/products/image_update_params.rb +6 -5
- data/lib/dodopayments/models/products/image_update_response.rb +3 -2
- data/lib/dodopayments/models/refund.rb +11 -4
- data/lib/dodopayments/models/refund_create_params.rb +6 -13
- data/lib/dodopayments/models/refund_list_params.rb +5 -4
- data/lib/dodopayments/models/refund_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/refund_status.rb +7 -2
- data/lib/dodopayments/models/subscription.rb +21 -7
- data/lib/dodopayments/models/subscription_charge_params.rb +27 -0
- data/lib/dodopayments/models/subscription_charge_response.rb +20 -0
- data/lib/dodopayments/models/subscription_create_params.rb +261 -8
- data/lib/dodopayments/models/subscription_create_response.rb +6 -5
- data/lib/dodopayments/models/subscription_list_params.rb +5 -4
- data/lib/dodopayments/models/subscription_retrieve_params.rb +5 -4
- data/lib/dodopayments/models/subscription_status.rb +7 -2
- data/lib/dodopayments/models/subscription_update_params.rb +19 -6
- data/lib/dodopayments/models/time_interval.rb +7 -2
- data/lib/dodopayments/models/webhook_event.rb +3 -2
- data/lib/dodopayments/models/webhook_event_list_params.rb +6 -5
- data/lib/dodopayments/models/webhook_event_retrieve_params.rb +5 -4
- data/lib/dodopayments/request_options.rb +12 -47
- data/lib/dodopayments/resources/customers/customer_portal.rb +10 -8
- data/lib/dodopayments/resources/customers.rb +30 -29
- data/lib/dodopayments/resources/discounts.rb +45 -69
- data/lib/dodopayments/resources/disputes.rb +20 -22
- data/lib/dodopayments/resources/invoices/payments.rb +8 -5
- data/lib/dodopayments/resources/invoices.rb +2 -0
- data/lib/dodopayments/resources/license_key_instances.rb +23 -21
- data/lib/dodopayments/resources/license_keys.rb +27 -32
- data/lib/dodopayments/resources/licenses.rb +20 -18
- data/lib/dodopayments/resources/misc.rb +7 -3
- data/lib/dodopayments/resources/payments.rb +36 -43
- data/lib/dodopayments/resources/payouts.rb +9 -7
- data/lib/dodopayments/resources/products/images.rb +9 -7
- data/lib/dodopayments/resources/products.rb +59 -87
- data/lib/dodopayments/resources/refunds.rb +25 -29
- data/lib/dodopayments/resources/subscriptions.rb +68 -54
- data/lib/dodopayments/resources/webhook_events.rb +20 -21
- data/lib/dodopayments/version.rb +1 -1
- data/lib/dodopayments.rb +34 -7
- data/manifest.yaml +1 -0
- data/rbi/lib/dodopayments/client.rbi +32 -47
- data/rbi/lib/dodopayments/errors.rbi +125 -161
- data/rbi/lib/dodopayments/internal/default_page_number_pagination.rbi +18 -0
- data/rbi/lib/dodopayments/internal/transport/base_client.rbi +199 -0
- data/rbi/lib/dodopayments/internal/transport/pooled_net_requester.rbi +60 -0
- data/rbi/lib/dodopayments/internal/type/array_of.rbi +85 -0
- data/rbi/lib/dodopayments/internal/type/base_model.rbi +203 -0
- data/rbi/lib/dodopayments/internal/type/base_page.rbi +36 -0
- data/rbi/lib/dodopayments/internal/type/boolean.rbi +48 -0
- data/rbi/lib/dodopayments/internal/type/converter.rbi +120 -0
- data/rbi/lib/dodopayments/internal/type/enum.rbi +69 -0
- data/rbi/lib/dodopayments/internal/type/hash_of.rbi +85 -0
- data/rbi/lib/dodopayments/internal/type/io_like.rbi +46 -0
- data/rbi/lib/dodopayments/internal/type/request_parameters.rbi +21 -0
- data/rbi/lib/dodopayments/internal/type/union.rbi +77 -0
- data/rbi/lib/dodopayments/internal/type/unknown.rbi +40 -0
- data/rbi/lib/dodopayments/internal/util.rbi +297 -0
- data/rbi/lib/dodopayments/internal.rbi +12 -0
- data/rbi/lib/dodopayments/models/attach_existing_customer.rbi +4 -11
- data/rbi/lib/dodopayments/models/billing_address.rbi +20 -38
- data/rbi/lib/dodopayments/models/country_code.rbi +256 -256
- data/rbi/lib/dodopayments/models/create_new_customer.rbi +11 -30
- data/rbi/lib/dodopayments/models/customer.rbi +9 -41
- data/rbi/lib/dodopayments/models/customer_create_params.rbi +9 -26
- data/rbi/lib/dodopayments/models/customer_limited_details.rbi +6 -23
- data/rbi/lib/dodopayments/models/customer_list_params.rbi +8 -20
- data/rbi/lib/dodopayments/models/customer_portal_session.rbi +4 -11
- data/rbi/lib/dodopayments/models/customer_request.rbi +4 -7
- data/rbi/lib/dodopayments/models/customer_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/customer_update_params.rbi +8 -20
- data/rbi/lib/dodopayments/models/customers/customer_portal_create_params.rbi +7 -14
- data/rbi/lib/dodopayments/models/discount.rbi +20 -78
- data/rbi/lib/dodopayments/models/discount_create_params.rbi +23 -61
- data/rbi/lib/dodopayments/models/discount_delete_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/discount_list_params.rbi +8 -20
- data/rbi/lib/dodopayments/models/discount_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/discount_type.rbi +8 -8
- data/rbi/lib/dodopayments/models/discount_update_params.rbi +21 -59
- data/rbi/lib/dodopayments/models/dispute.rbi +27 -59
- data/rbi/lib/dodopayments/models/dispute_list_params.rbi +19 -57
- data/rbi/lib/dodopayments/models/dispute_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/dispute_stage.rbi +10 -10
- data/rbi/lib/dodopayments/models/dispute_status.rbi +14 -14
- data/rbi/lib/dodopayments/models/intent_status.rbi +22 -18
- data/rbi/lib/dodopayments/models/invoices/payment_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/license_activate_params.rbi +8 -20
- data/rbi/lib/dodopayments/models/license_deactivate_params.rbi +8 -20
- data/rbi/lib/dodopayments/models/license_key.rbi +19 -82
- data/rbi/lib/dodopayments/models/license_key_duration.rbi +8 -20
- data/rbi/lib/dodopayments/models/license_key_instance.rbi +8 -35
- data/rbi/lib/dodopayments/models/license_key_instance_list_params.rbi +9 -26
- data/rbi/lib/dodopayments/models/license_key_instance_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/license_key_instance_update_params.rbi +7 -17
- data/rbi/lib/dodopayments/models/license_key_list_params.rbi +21 -40
- data/rbi/lib/dodopayments/models/license_key_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/license_key_status.rbi +10 -10
- data/rbi/lib/dodopayments/models/license_key_update_params.rbi +12 -29
- data/rbi/lib/dodopayments/models/license_validate_params.rbi +8 -20
- data/rbi/lib/dodopayments/models/license_validate_response.rbi +4 -11
- data/rbi/lib/dodopayments/models/misc_list_supported_countries_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/misc_list_supported_countries_response.rbi +5 -1
- data/rbi/lib/dodopayments/models/one_time_product_cart_item.rbi +8 -24
- data/rbi/lib/dodopayments/models/payment.rbi +197 -308
- data/rbi/lib/dodopayments/models/payment_create_params.rbi +256 -61
- data/rbi/lib/dodopayments/models/payment_create_response.rbi +16 -60
- data/rbi/lib/dodopayments/models/payment_list_params.rbi +16 -54
- data/rbi/lib/dodopayments/models/payment_list_response.rbi +178 -228
- data/rbi/lib/dodopayments/models/payment_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/payout_list_params.rbi +8 -20
- data/rbi/lib/dodopayments/models/payout_list_response.rbi +197 -271
- data/rbi/lib/dodopayments/models/price.rbi +368 -464
- data/rbi/lib/dodopayments/models/product.rbi +48 -119
- data/rbi/lib/dodopayments/models/product_create_params.rbi +46 -86
- data/rbi/lib/dodopayments/models/product_delete_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/product_list_params.rbi +15 -34
- data/rbi/lib/dodopayments/models/product_list_response.rbi +209 -275
- data/rbi/lib/dodopayments/models/product_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/product_unarchive_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/product_update_params.rbi +55 -102
- data/rbi/lib/dodopayments/models/products/image_update_params.rbi +7 -14
- data/rbi/lib/dodopayments/models/products/image_update_response.rbi +5 -17
- data/rbi/lib/dodopayments/models/refund.rbi +181 -213
- data/rbi/lib/dodopayments/models/refund_create_params.rbi +13 -39
- data/rbi/lib/dodopayments/models/refund_list_params.rbi +15 -48
- data/rbi/lib/dodopayments/models/refund_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/refund_status.rbi +11 -11
- data/rbi/lib/dodopayments/models/subscription.rbi +202 -283
- data/rbi/lib/dodopayments/models/subscription_charge_params.rbi +27 -0
- data/rbi/lib/dodopayments/models/subscription_charge_response.rbi +16 -0
- data/rbi/lib/dodopayments/models/subscription_create_params.rbi +310 -69
- data/rbi/lib/dodopayments/models/subscription_create_response.rbi +15 -51
- data/rbi/lib/dodopayments/models/subscription_list_params.rbi +15 -48
- data/rbi/lib/dodopayments/models/subscription_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/models/subscription_status.rbi +14 -14
- data/rbi/lib/dodopayments/models/subscription_update_params.rbi +25 -21
- data/rbi/lib/dodopayments/models/time_interval.rbi +11 -11
- data/rbi/lib/dodopayments/models/webhook_event.rbi +11 -54
- data/rbi/lib/dodopayments/models/webhook_event_list_params.rbi +12 -45
- data/rbi/lib/dodopayments/models/webhook_event_retrieve_params.rbi +6 -8
- data/rbi/lib/dodopayments/request_options.rbi +18 -81
- data/rbi/lib/dodopayments/resources/customers/customer_portal.rbi +5 -7
- data/rbi/lib/dodopayments/resources/customers.rbi +12 -20
- data/rbi/lib/dodopayments/resources/discounts.rbi +27 -37
- data/rbi/lib/dodopayments/resources/disputes.rbi +9 -13
- data/rbi/lib/dodopayments/resources/invoices/payments.rbi +4 -5
- data/rbi/lib/dodopayments/resources/invoices.rbi +3 -4
- data/rbi/lib/dodopayments/resources/license_key_instances.rbi +9 -15
- data/rbi/lib/dodopayments/resources/license_keys.rbi +13 -19
- data/rbi/lib/dodopayments/resources/licenses.rbi +8 -11
- data/rbi/lib/dodopayments/resources/misc.rbi +12 -6
- data/rbi/lib/dodopayments/resources/payments.rbi +32 -21
- data/rbi/lib/dodopayments/resources/payouts.rbi +5 -7
- data/rbi/lib/dodopayments/resources/products/images.rbi +4 -6
- data/rbi/lib/dodopayments/resources/products.rbi +43 -44
- data/rbi/lib/dodopayments/resources/refunds.rbi +10 -20
- data/rbi/lib/dodopayments/resources/subscriptions.rbi +57 -24
- data/rbi/lib/dodopayments/resources/webhook_events.rbi +7 -10
- data/rbi/lib/dodopayments/version.rbi +1 -1
- data/sig/dodopayments/client.rbs +8 -8
- data/sig/dodopayments/errors.rbs +98 -96
- data/sig/dodopayments/internal/default_page_number_pagination.rbs +11 -0
- data/sig/dodopayments/internal/transport/base_client.rbs +110 -0
- data/sig/dodopayments/internal/transport/pooled_net_requester.rbs +41 -0
- data/sig/dodopayments/internal/type/array_of.rbs +43 -0
- data/sig/dodopayments/internal/type/base_model.rbs +86 -0
- data/sig/dodopayments/internal/type/base_page.rbs +24 -0
- data/sig/dodopayments/internal/type/boolean.rbs +23 -0
- data/sig/dodopayments/internal/type/converter.rbs +54 -0
- data/sig/dodopayments/internal/type/enum.rbs +29 -0
- data/sig/dodopayments/internal/type/hash_of.rbs +43 -0
- data/sig/dodopayments/internal/type/io_like.rbs +23 -0
- data/sig/dodopayments/internal/type/request_parameters.rbs +15 -0
- data/sig/dodopayments/internal/type/union.rbs +47 -0
- data/sig/dodopayments/internal/type/unknown.rbs +23 -0
- data/sig/dodopayments/internal/util.rbs +156 -0
- data/sig/dodopayments/internal.rbs +5 -0
- data/sig/dodopayments/models/attach_existing_customer.rbs +2 -7
- data/sig/dodopayments/models/billing_address.rbs +8 -12
- data/sig/dodopayments/models/country_code.rbs +4 -2
- data/sig/dodopayments/models/create_new_customer.rbs +7 -12
- data/sig/dodopayments/models/customer.rbs +9 -13
- data/sig/dodopayments/models/customer_create_params.rbs +10 -15
- data/sig/dodopayments/models/customer_limited_details.rbs +2 -7
- data/sig/dodopayments/models/customer_list_params.rbs +9 -14
- data/sig/dodopayments/models/customer_portal_session.rbs +2 -7
- data/sig/dodopayments/models/customer_request.rbs +4 -2
- data/sig/dodopayments/models/customer_retrieve_params.rbs +6 -10
- data/sig/dodopayments/models/customer_update_params.rbs +9 -14
- data/sig/dodopayments/models/customers/customer_portal_create_params.rbs +8 -13
- data/sig/dodopayments/models/discount.rbs +14 -18
- data/sig/dodopayments/models/discount_create_params.rbs +14 -19
- data/sig/dodopayments/models/discount_delete_params.rbs +6 -10
- data/sig/dodopayments/models/discount_list_params.rbs +9 -14
- data/sig/dodopayments/models/discount_retrieve_params.rbs +6 -10
- data/sig/dodopayments/models/discount_type.rbs +4 -2
- data/sig/dodopayments/models/discount_update_params.rbs +14 -19
- data/sig/dodopayments/models/dispute.rbs +11 -15
- data/sig/dodopayments/models/dispute_list_params.rbs +14 -19
- data/sig/dodopayments/models/dispute_retrieve_params.rbs +6 -10
- data/sig/dodopayments/models/dispute_stage.rbs +4 -2
- data/sig/dodopayments/models/dispute_status.rbs +4 -2
- data/sig/dodopayments/models/intent_status.rbs +4 -2
- data/sig/dodopayments/models/invoices/payment_retrieve_params.rbs +6 -10
- data/sig/dodopayments/models/license_activate_params.rbs +10 -14
- data/sig/dodopayments/models/license_deactivate_params.rbs +9 -14
- data/sig/dodopayments/models/license_key.rbs +15 -19
- data/sig/dodopayments/models/license_key_duration.rbs +5 -7
- data/sig/dodopayments/models/license_key_instance.rbs +8 -13
- data/sig/dodopayments/models/license_key_instance_list_params.rbs +10 -15
- data/sig/dodopayments/models/license_key_instance_retrieve_params.rbs +5 -10
- data/sig/dodopayments/models/license_key_instance_update_params.rbs +8 -10
- data/sig/dodopayments/models/license_key_list_params.rbs +12 -17
- data/sig/dodopayments/models/license_key_retrieve_params.rbs +6 -10
- data/sig/dodopayments/models/license_key_status.rbs +4 -2
- data/sig/dodopayments/models/license_key_update_params.rbs +10 -15
- data/sig/dodopayments/models/license_validate_params.rbs +9 -14
- data/sig/dodopayments/models/license_validate_response.rbs +2 -7
- data/sig/dodopayments/models/misc_list_supported_countries_params.rbs +5 -10
- data/sig/dodopayments/models/one_time_product_cart_item.rbs +6 -7
- data/sig/dodopayments/models/payment.rbs +28 -35
- data/sig/dodopayments/models/payment_create_params.rbs +371 -20
- data/sig/dodopayments/models/payment_create_response.rbs +11 -16
- data/sig/dodopayments/models/payment_list_params.rbs +14 -19
- data/sig/dodopayments/models/payment_list_response.rbs +17 -20
- data/sig/dodopayments/models/payment_retrieve_params.rbs +6 -10
- data/sig/dodopayments/models/payout_list_params.rbs +9 -14
- data/sig/dodopayments/models/payout_list_response.rbs +30 -28
- data/sig/dodopayments/models/price.rbs +37 -41
- data/sig/dodopayments/models/product.rbs +22 -24
- data/sig/dodopayments/models/product_create_params.rbs +20 -23
- data/sig/dodopayments/models/product_delete_params.rbs +6 -10
- data/sig/dodopayments/models/product_list_params.rbs +11 -16
- data/sig/dodopayments/models/product_list_response.rbs +24 -25
- data/sig/dodopayments/models/product_retrieve_params.rbs +6 -10
- data/sig/dodopayments/models/product_unarchive_params.rbs +6 -10
- data/sig/dodopayments/models/product_update_params.rbs +21 -24
- data/sig/dodopayments/models/products/image_update_params.rbs +9 -13
- data/sig/dodopayments/models/products/image_update_response.rbs +2 -7
- data/sig/dodopayments/models/refund.rbs +15 -15
- data/sig/dodopayments/models/refund_create_params.rbs +10 -18
- data/sig/dodopayments/models/refund_list_params.rbs +13 -18
- data/sig/dodopayments/models/refund_retrieve_params.rbs +6 -10
- data/sig/dodopayments/models/refund_status.rbs +4 -2
- data/sig/dodopayments/models/subscription.rbs +29 -27
- data/sig/dodopayments/models/subscription_charge_params.rbs +21 -0
- data/sig/dodopayments/models/subscription_charge_response.rbs +13 -0
- data/sig/dodopayments/models/subscription_create_params.rbs +389 -22
- data/sig/dodopayments/models/subscription_create_response.rbs +10 -15
- data/sig/dodopayments/models/subscription_list_params.rbs +13 -18
- data/sig/dodopayments/models/subscription_retrieve_params.rbs +6 -10
- data/sig/dodopayments/models/subscription_status.rbs +4 -2
- data/sig/dodopayments/models/subscription_update_params.rbs +18 -15
- data/sig/dodopayments/models/time_interval.rbs +4 -2
- data/sig/dodopayments/models/webhook_event.rbs +11 -15
- data/sig/dodopayments/models/webhook_event_list_params.rbs +13 -18
- data/sig/dodopayments/models/webhook_event_retrieve_params.rbs +6 -10
- data/sig/dodopayments/request_options.rbs +3 -13
- data/sig/dodopayments/resources/customers/customer_portal.rbs +5 -11
- data/sig/dodopayments/resources/customers.rbs +21 -42
- data/sig/dodopayments/resources/discounts.rbs +34 -61
- data/sig/dodopayments/resources/disputes.rbs +14 -24
- data/sig/dodopayments/resources/invoices/payments.rbs +4 -10
- data/sig/dodopayments/resources/license_key_instances.rbs +15 -32
- data/sig/dodopayments/resources/license_keys.rbs +19 -36
- data/sig/dodopayments/resources/licenses.rbs +15 -30
- data/sig/dodopayments/resources/misc.rbs +3 -8
- data/sig/dodopayments/resources/payments.rbs +28 -39
- data/sig/dodopayments/resources/payouts.rbs +5 -9
- data/sig/dodopayments/resources/products/images.rbs +5 -11
- data/sig/dodopayments/resources/products.rbs +45 -71
- data/sig/dodopayments/resources/refunds.rbs +18 -33
- data/sig/dodopayments/resources/subscriptions.rbs +44 -54
- data/sig/dodopayments/resources/webhook_events.rbs +13 -24
- data/sig/dodopayments/version.rbs +1 -1
- metadata +62 -27
- data/lib/dodopayments/base_client.rb +0 -453
- data/lib/dodopayments/base_model.rb +0 -1217
- data/lib/dodopayments/base_page.rb +0 -62
- data/lib/dodopayments/default_page_number_pagination.rb +0 -97
- data/lib/dodopayments/extern.rb +0 -9
- data/lib/dodopayments/pooled_net_requester.rb +0 -164
- data/lib/dodopayments/util.rb +0 -717
- data/rbi/lib/dodopayments/base_client.rbi +0 -186
- data/rbi/lib/dodopayments/base_model.rbi +0 -606
- data/rbi/lib/dodopayments/base_page.rbi +0 -40
- data/rbi/lib/dodopayments/default_page_number_pagination.rbi +0 -17
- data/rbi/lib/dodopayments/extern.rbi +0 -8
- data/rbi/lib/dodopayments/pooled_net_requester.rbi +0 -47
- data/rbi/lib/dodopayments/util.rbi +0 -270
- data/sig/dodopayments/base_client.rbs +0 -103
- data/sig/dodopayments/base_model.rbs +0 -246
- data/sig/dodopayments/base_page.rbs +0 -20
- data/sig/dodopayments/default_page_number_pagination.rbs +0 -7
- data/sig/dodopayments/extern.rbs +0 -4
- data/sig/dodopayments/pooled_net_requester.rbs +0 -30
- data/sig/dodopayments/util.rbs +0 -136
@@ -0,0 +1,271 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Internal
|
5
|
+
module Type
|
6
|
+
# @api private
|
7
|
+
module Converter
|
8
|
+
# rubocop:disable Lint/UnusedMethodArgument
|
9
|
+
|
10
|
+
# @api private
|
11
|
+
#
|
12
|
+
# @param value [Object]
|
13
|
+
#
|
14
|
+
# @param state [Hash{Symbol=>Object}] .
|
15
|
+
#
|
16
|
+
# @option state [Boolean, :strong] :strictness
|
17
|
+
#
|
18
|
+
# @option state [Hash{Symbol=>Object}] :exactness
|
19
|
+
#
|
20
|
+
# @option state [Integer] :branched
|
21
|
+
#
|
22
|
+
# @return [Object]
|
23
|
+
def coerce(value, state:) = (raise NotImplementedError)
|
24
|
+
|
25
|
+
# @api private
|
26
|
+
#
|
27
|
+
# @param value [Object]
|
28
|
+
#
|
29
|
+
# @param state [Hash{Symbol=>Object}] .
|
30
|
+
#
|
31
|
+
# @option state [Boolean] :can_retry
|
32
|
+
#
|
33
|
+
# @return [Object]
|
34
|
+
def dump(value, state:)
|
35
|
+
case value
|
36
|
+
in Array
|
37
|
+
value.map { Dodopayments::Internal::Type::Unknown.dump(_1, state: state) }
|
38
|
+
in Hash
|
39
|
+
value.transform_values { Dodopayments::Internal::Type::Unknown.dump(_1, state: state) }
|
40
|
+
in Dodopayments::Internal::Type::BaseModel
|
41
|
+
value.class.dump(value, state: state)
|
42
|
+
in StringIO
|
43
|
+
value.string
|
44
|
+
in Pathname | IO
|
45
|
+
state[:can_retry] = false if value.is_a?(IO)
|
46
|
+
Dodopayments::Internal::Util::SerializationAdapter.new(value)
|
47
|
+
else
|
48
|
+
value
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# @api private
|
53
|
+
#
|
54
|
+
# @param depth [Integer]
|
55
|
+
#
|
56
|
+
# @return [String]
|
57
|
+
def inspect(depth: 0)
|
58
|
+
super()
|
59
|
+
end
|
60
|
+
|
61
|
+
# rubocop:enable Lint/UnusedMethodArgument
|
62
|
+
|
63
|
+
class << self
|
64
|
+
# @api private
|
65
|
+
#
|
66
|
+
# @param spec [Hash{Symbol=>Object}, Proc, Dodopayments::Internal::Type::Converter, Class] .
|
67
|
+
#
|
68
|
+
# @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
|
69
|
+
#
|
70
|
+
# @option spec [Proc] :enum
|
71
|
+
#
|
72
|
+
# @option spec [Proc] :union
|
73
|
+
#
|
74
|
+
# @option spec [Boolean] :"nil?"
|
75
|
+
#
|
76
|
+
# @return [Proc]
|
77
|
+
def type_info(spec)
|
78
|
+
case spec
|
79
|
+
in Proc
|
80
|
+
spec
|
81
|
+
in Hash
|
82
|
+
type_info(spec.slice(:const, :enum, :union).first&.last)
|
83
|
+
in true | false
|
84
|
+
-> { Dodopayments::Internal::Type::Boolean }
|
85
|
+
in Dodopayments::Internal::Type::Converter | Class | Symbol
|
86
|
+
-> { spec }
|
87
|
+
in NilClass | Integer | Float
|
88
|
+
-> { spec.class }
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# @api private
|
93
|
+
#
|
94
|
+
# Based on `target`, transform `value` into `target`, to the extent possible:
|
95
|
+
#
|
96
|
+
# 1. if the given `value` conforms to `target` already, return the given `value`
|
97
|
+
# 2. if it's possible and safe to convert the given `value` to `target`, then the
|
98
|
+
# converted value
|
99
|
+
# 3. otherwise, the given `value` unaltered
|
100
|
+
#
|
101
|
+
# The coercion process is subject to improvement between minor release versions.
|
102
|
+
# See https://docs.pydantic.dev/latest/concepts/unions/#smart-mode
|
103
|
+
#
|
104
|
+
# @param target [Dodopayments::Internal::Type::Converter, Class]
|
105
|
+
#
|
106
|
+
# @param value [Object]
|
107
|
+
#
|
108
|
+
# @param state [Hash{Symbol=>Object}] The `strictness` is one of `true`, `false`, or `:strong`. This informs the
|
109
|
+
# coercion strategy when we have to decide between multiple possible conversion
|
110
|
+
# targets:
|
111
|
+
#
|
112
|
+
# - `true`: the conversion must be exact, with minimum coercion.
|
113
|
+
# - `false`: the conversion can be approximate, with some coercion.
|
114
|
+
# - `:strong`: the conversion must be exact, with no coercion, and raise an error
|
115
|
+
# if not possible.
|
116
|
+
#
|
117
|
+
# The `exactness` is `Hash` with keys being one of `yes`, `no`, or `maybe`. For
|
118
|
+
# any given conversion attempt, the exactness will be updated based on how closely
|
119
|
+
# the value recursively matches the target type:
|
120
|
+
#
|
121
|
+
# - `yes`: the value can be converted to the target type with minimum coercion.
|
122
|
+
# - `maybe`: the value can be converted to the target type with some reasonable
|
123
|
+
# coercion.
|
124
|
+
# - `no`: the value cannot be converted to the target type.
|
125
|
+
#
|
126
|
+
# See implementation below for more details.
|
127
|
+
#
|
128
|
+
# @option state [Boolean, :strong] :strictness
|
129
|
+
#
|
130
|
+
# @option state [Hash{Symbol=>Object}] :exactness
|
131
|
+
#
|
132
|
+
# @option state [Integer] :branched
|
133
|
+
#
|
134
|
+
# @return [Object]
|
135
|
+
def coerce(
|
136
|
+
target,
|
137
|
+
value,
|
138
|
+
state: {strictness: true, exactness: {yes: 0, no: 0, maybe: 0}, branched: 0}
|
139
|
+
)
|
140
|
+
# rubocop:disable Lint/SuppressedException
|
141
|
+
# rubocop:disable Metrics/BlockNesting
|
142
|
+
strictness, exactness = state.fetch_values(:strictness, :exactness)
|
143
|
+
|
144
|
+
case target
|
145
|
+
in Dodopayments::Internal::Type::Converter
|
146
|
+
return target.coerce(value, state: state)
|
147
|
+
in Class
|
148
|
+
if value.is_a?(target)
|
149
|
+
exactness[:yes] += 1
|
150
|
+
return value
|
151
|
+
end
|
152
|
+
|
153
|
+
case target
|
154
|
+
in -> { _1 <= NilClass }
|
155
|
+
exactness[value.nil? ? :yes : :maybe] += 1
|
156
|
+
return nil
|
157
|
+
in -> { _1 <= Integer }
|
158
|
+
if value.is_a?(Integer)
|
159
|
+
exactness[:yes] += 1
|
160
|
+
return value
|
161
|
+
elsif strictness == :strong && Integer(value, exception: false) != value
|
162
|
+
message = "no implicit conversion of #{value.class} into #{target.inspect}"
|
163
|
+
raise value.is_a?(Numeric) ? ArgumentError.new(message) : TypeError.new(message)
|
164
|
+
else
|
165
|
+
Kernel.then do
|
166
|
+
return Integer(value).tap { exactness[:maybe] += 1 }
|
167
|
+
rescue ArgumentError, TypeError
|
168
|
+
end
|
169
|
+
end
|
170
|
+
in -> { _1 <= Float }
|
171
|
+
if value.is_a?(Numeric)
|
172
|
+
exactness[:yes] += 1
|
173
|
+
return Float(value)
|
174
|
+
elsif strictness == :strong
|
175
|
+
message = "no implicit conversion of #{value.class} into #{target.inspect}"
|
176
|
+
raise TypeError.new(message)
|
177
|
+
else
|
178
|
+
Kernel.then do
|
179
|
+
return Float(value).tap { exactness[:maybe] += 1 }
|
180
|
+
rescue ArgumentError, TypeError
|
181
|
+
end
|
182
|
+
end
|
183
|
+
in -> { _1 <= String }
|
184
|
+
case value
|
185
|
+
in String | Symbol | Numeric
|
186
|
+
exactness[value.is_a?(Numeric) ? :maybe : :yes] += 1
|
187
|
+
return value.to_s
|
188
|
+
in StringIO
|
189
|
+
exactness[:yes] += 1
|
190
|
+
return value.string
|
191
|
+
else
|
192
|
+
if strictness == :strong
|
193
|
+
message = "no implicit conversion of #{value.class} into #{target.inspect}"
|
194
|
+
raise TypeError.new(message)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
in -> { _1 <= Date || _1 <= Time }
|
198
|
+
Kernel.then do
|
199
|
+
return target.parse(value).tap { exactness[:yes] += 1 }
|
200
|
+
rescue ArgumentError, TypeError => e
|
201
|
+
raise e if strictness == :strong
|
202
|
+
end
|
203
|
+
in -> { _1 <= StringIO } if value.is_a?(String)
|
204
|
+
exactness[:yes] += 1
|
205
|
+
return StringIO.new(value.b)
|
206
|
+
else
|
207
|
+
end
|
208
|
+
in Symbol
|
209
|
+
case value
|
210
|
+
in Symbol | String
|
211
|
+
if value.to_sym == target
|
212
|
+
exactness[:yes] += 1
|
213
|
+
return target
|
214
|
+
else
|
215
|
+
exactness[:maybe] += 1
|
216
|
+
return value
|
217
|
+
end
|
218
|
+
else
|
219
|
+
if strictness == :strong
|
220
|
+
message = "cannot convert non-matching #{value.class} into #{target.inspect}"
|
221
|
+
raise ArgumentError.new(message)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
else
|
225
|
+
end
|
226
|
+
|
227
|
+
exactness[:no] += 1
|
228
|
+
value
|
229
|
+
# rubocop:enable Metrics/BlockNesting
|
230
|
+
# rubocop:enable Lint/SuppressedException
|
231
|
+
end
|
232
|
+
|
233
|
+
# @api private
|
234
|
+
#
|
235
|
+
# @param target [Dodopayments::Internal::Type::Converter, Class]
|
236
|
+
#
|
237
|
+
# @param value [Object]
|
238
|
+
#
|
239
|
+
# @param state [Hash{Symbol=>Object}] .
|
240
|
+
#
|
241
|
+
# @option state [Boolean] :can_retry
|
242
|
+
#
|
243
|
+
# @return [Object]
|
244
|
+
def dump(target, value, state: {can_retry: true})
|
245
|
+
case target
|
246
|
+
in Dodopayments::Internal::Type::Converter
|
247
|
+
target.dump(value, state: state)
|
248
|
+
else
|
249
|
+
Dodopayments::Internal::Type::Unknown.dump(value, state: state)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
# @api private
|
254
|
+
#
|
255
|
+
# @param target [Object]
|
256
|
+
# @param depth [Integer]
|
257
|
+
#
|
258
|
+
# @return [String]
|
259
|
+
def inspect(target, depth:)
|
260
|
+
case target
|
261
|
+
in Dodopayments::Internal::Type::Converter
|
262
|
+
target.inspect(depth: depth.succ)
|
263
|
+
else
|
264
|
+
target.inspect
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
271
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Internal
|
5
|
+
module Type
|
6
|
+
# @api private
|
7
|
+
#
|
8
|
+
# A value from among a specified list of options. OpenAPI enum values map to Ruby
|
9
|
+
# values in the SDK as follows:
|
10
|
+
#
|
11
|
+
# 1. boolean => true | false
|
12
|
+
# 2. integer => Integer
|
13
|
+
# 3. float => Float
|
14
|
+
# 4. string => Symbol
|
15
|
+
#
|
16
|
+
# We can therefore convert string values to Symbols, but can't convert other
|
17
|
+
# values safely.
|
18
|
+
#
|
19
|
+
# @example
|
20
|
+
# # `intent_status` is a `Dodopayments::Models::IntentStatus`
|
21
|
+
# case intent_status
|
22
|
+
# when Dodopayments::Models::IntentStatus::SUCCEEDED
|
23
|
+
# # ...
|
24
|
+
# when Dodopayments::Models::IntentStatus::FAILED
|
25
|
+
# # ...
|
26
|
+
# when Dodopayments::Models::IntentStatus::CANCELLED
|
27
|
+
# # ...
|
28
|
+
# else
|
29
|
+
# puts(intent_status)
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# @example
|
33
|
+
# case intent_status
|
34
|
+
# in :succeeded
|
35
|
+
# # ...
|
36
|
+
# in :failed
|
37
|
+
# # ...
|
38
|
+
# in :cancelled
|
39
|
+
# # ...
|
40
|
+
# else
|
41
|
+
# puts(intent_status)
|
42
|
+
# end
|
43
|
+
module Enum
|
44
|
+
include Dodopayments::Internal::Type::Converter
|
45
|
+
|
46
|
+
# All of the valid Symbol values for this enum.
|
47
|
+
#
|
48
|
+
# @return [Array<NilClass, Boolean, Integer, Float, Symbol>]
|
49
|
+
def values = (@values ||= constants.map { const_get(_1) })
|
50
|
+
|
51
|
+
# @api private
|
52
|
+
#
|
53
|
+
# Guard against thread safety issues by instantiating `@values`.
|
54
|
+
private def finalize! = values
|
55
|
+
|
56
|
+
# @param other [Object]
|
57
|
+
#
|
58
|
+
# @return [Boolean]
|
59
|
+
def ===(other) = values.include?(other)
|
60
|
+
|
61
|
+
# @param other [Object]
|
62
|
+
#
|
63
|
+
# @return [Boolean]
|
64
|
+
def ==(other)
|
65
|
+
# rubocop:disable Style/CaseEquality
|
66
|
+
Dodopayments::Internal::Type::Enum === other && other.values.to_set == values.to_set
|
67
|
+
# rubocop:enable Style/CaseEquality
|
68
|
+
end
|
69
|
+
|
70
|
+
# @api private
|
71
|
+
#
|
72
|
+
# Unlike with primitives, `Enum` additionally validates that the value is a member
|
73
|
+
# of the enum.
|
74
|
+
#
|
75
|
+
# @param value [String, Symbol, Object]
|
76
|
+
#
|
77
|
+
# @param state [Hash{Symbol=>Object}] .
|
78
|
+
#
|
79
|
+
# @option state [Boolean, :strong] :strictness
|
80
|
+
#
|
81
|
+
# @option state [Hash{Symbol=>Object}] :exactness
|
82
|
+
#
|
83
|
+
# @option state [Integer] :branched
|
84
|
+
#
|
85
|
+
# @return [Symbol, Object]
|
86
|
+
def coerce(value, state:)
|
87
|
+
exactness = state.fetch(:exactness)
|
88
|
+
val = value.is_a?(String) ? value.to_sym : value
|
89
|
+
|
90
|
+
if values.include?(val)
|
91
|
+
exactness[:yes] += 1
|
92
|
+
val
|
93
|
+
else
|
94
|
+
exactness[values.first&.class == val.class ? :maybe : :no] += 1
|
95
|
+
value
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# @!parse
|
100
|
+
# # @api private
|
101
|
+
# #
|
102
|
+
# # @param value [Symbol, Object]
|
103
|
+
# #
|
104
|
+
# # @param state [Hash{Symbol=>Object}] .
|
105
|
+
# #
|
106
|
+
# # @option state [Boolean] :can_retry
|
107
|
+
# #
|
108
|
+
# # @return [Symbol, Object]
|
109
|
+
# def dump(value, state:) = super
|
110
|
+
|
111
|
+
# @api private
|
112
|
+
#
|
113
|
+
# @param depth [Integer]
|
114
|
+
#
|
115
|
+
# @return [String]
|
116
|
+
def inspect(depth: 0)
|
117
|
+
if depth.positive?
|
118
|
+
return is_a?(Module) ? super() : self.class.name
|
119
|
+
end
|
120
|
+
|
121
|
+
members = values.map { Dodopayments::Internal::Type::Converter.inspect(_1, depth: depth.succ) }
|
122
|
+
prefix = is_a?(Module) ? name : self.class.name
|
123
|
+
|
124
|
+
"#{prefix}[#{members.join(' | ')}]"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Internal
|
5
|
+
module Type
|
6
|
+
# @api private
|
7
|
+
#
|
8
|
+
# @abstract
|
9
|
+
#
|
10
|
+
# @generic Elem
|
11
|
+
#
|
12
|
+
# Hash of items of a given type.
|
13
|
+
class HashOf
|
14
|
+
include Dodopayments::Internal::Type::Converter
|
15
|
+
|
16
|
+
private_class_method :new
|
17
|
+
|
18
|
+
# @overload [](type_info, spec = {})
|
19
|
+
#
|
20
|
+
# @param type_info [Hash{Symbol=>Object}, Proc, Dodopayments::Internal::Type::Converter, Class]
|
21
|
+
#
|
22
|
+
# @param spec [Hash{Symbol=>Object}] .
|
23
|
+
#
|
24
|
+
# @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
|
25
|
+
#
|
26
|
+
# @option spec [Proc] :enum
|
27
|
+
#
|
28
|
+
# @option spec [Proc] :union
|
29
|
+
#
|
30
|
+
# @option spec [Boolean] :"nil?"
|
31
|
+
def self.[](...) = new(...)
|
32
|
+
|
33
|
+
# @param other [Object]
|
34
|
+
#
|
35
|
+
# @return [Boolean]
|
36
|
+
def ===(other)
|
37
|
+
type = item_type
|
38
|
+
case other
|
39
|
+
in Hash
|
40
|
+
other.all? do |key, val|
|
41
|
+
case [key, val]
|
42
|
+
in [Symbol | String, ^type]
|
43
|
+
true
|
44
|
+
else
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
else
|
49
|
+
false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# @param other [Object]
|
54
|
+
#
|
55
|
+
# @return [Boolean]
|
56
|
+
def ==(other)
|
57
|
+
# rubocop:disable Layout/LineLength
|
58
|
+
other.is_a?(Dodopayments::Internal::Type::HashOf) && other.nilable? == nilable? && other.item_type == item_type
|
59
|
+
# rubocop:enable Layout/LineLength
|
60
|
+
end
|
61
|
+
|
62
|
+
# @api private
|
63
|
+
#
|
64
|
+
# @param value [Hash{Object=>Object}, Object]
|
65
|
+
#
|
66
|
+
# @param state [Hash{Symbol=>Object}] .
|
67
|
+
#
|
68
|
+
# @option state [Boolean, :strong] :strictness
|
69
|
+
#
|
70
|
+
# @option state [Hash{Symbol=>Object}] :exactness
|
71
|
+
#
|
72
|
+
# @option state [Integer] :branched
|
73
|
+
#
|
74
|
+
# @return [Hash{Symbol=>Object}, Object]
|
75
|
+
def coerce(value, state:)
|
76
|
+
exactness = state.fetch(:exactness)
|
77
|
+
|
78
|
+
unless value.is_a?(Hash)
|
79
|
+
exactness[:no] += 1
|
80
|
+
return value
|
81
|
+
end
|
82
|
+
|
83
|
+
target = item_type
|
84
|
+
exactness[:yes] += 1
|
85
|
+
value
|
86
|
+
.to_h do |key, val|
|
87
|
+
k = key.is_a?(String) ? key.to_sym : key
|
88
|
+
v =
|
89
|
+
case [nilable?, val]
|
90
|
+
in [true, nil]
|
91
|
+
exactness[:yes] += 1
|
92
|
+
nil
|
93
|
+
else
|
94
|
+
Dodopayments::Internal::Type::Converter.coerce(target, val, state: state)
|
95
|
+
end
|
96
|
+
|
97
|
+
exactness[:no] += 1 unless k.is_a?(Symbol)
|
98
|
+
[k, v]
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# @api private
|
103
|
+
#
|
104
|
+
# @param value [Hash{Object=>Object}, Object]
|
105
|
+
#
|
106
|
+
# @param state [Hash{Symbol=>Object}] .
|
107
|
+
#
|
108
|
+
# @option state [Boolean] :can_retry
|
109
|
+
#
|
110
|
+
# @return [Hash{Symbol=>Object}, Object]
|
111
|
+
def dump(value, state:)
|
112
|
+
target = item_type
|
113
|
+
if value.is_a?(Hash)
|
114
|
+
value.transform_values do
|
115
|
+
Dodopayments::Internal::Type::Converter.dump(target, _1, state: state)
|
116
|
+
end
|
117
|
+
else
|
118
|
+
super
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
# @api private
|
123
|
+
#
|
124
|
+
# @return [generic<Elem>]
|
125
|
+
protected def item_type = @item_type_fn.call
|
126
|
+
|
127
|
+
# @api private
|
128
|
+
#
|
129
|
+
# @return [Boolean]
|
130
|
+
protected def nilable? = @nilable
|
131
|
+
|
132
|
+
# @api private
|
133
|
+
#
|
134
|
+
# @param type_info [Hash{Symbol=>Object}, Proc, Dodopayments::Internal::Type::Converter, Class]
|
135
|
+
#
|
136
|
+
# @param spec [Hash{Symbol=>Object}] .
|
137
|
+
#
|
138
|
+
# @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
|
139
|
+
#
|
140
|
+
# @option spec [Proc] :enum
|
141
|
+
#
|
142
|
+
# @option spec [Proc] :union
|
143
|
+
#
|
144
|
+
# @option spec [Boolean] :"nil?"
|
145
|
+
def initialize(type_info, spec = {})
|
146
|
+
@item_type_fn = Dodopayments::Internal::Type::Converter.type_info(type_info || spec)
|
147
|
+
@nilable = spec.fetch(:nil?, false)
|
148
|
+
end
|
149
|
+
|
150
|
+
# @api private
|
151
|
+
#
|
152
|
+
# @param depth [Integer]
|
153
|
+
#
|
154
|
+
# @return [String]
|
155
|
+
def inspect(depth: 0)
|
156
|
+
items = Dodopayments::Internal::Type::Converter.inspect(item_type, depth: depth.succ)
|
157
|
+
|
158
|
+
"#{self.class}[#{[items, nilable? ? 'nil' : nil].compact.join(' | ')}]"
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Internal
|
5
|
+
module Type
|
6
|
+
# @api private
|
7
|
+
#
|
8
|
+
# @abstract
|
9
|
+
#
|
10
|
+
# Either `Pathname` or `StringIO`.
|
11
|
+
class IOLike
|
12
|
+
extend Dodopayments::Internal::Type::Converter
|
13
|
+
|
14
|
+
private_class_method :new
|
15
|
+
|
16
|
+
# @param other [Object]
|
17
|
+
#
|
18
|
+
# @return [Boolean]
|
19
|
+
def self.===(other)
|
20
|
+
case other
|
21
|
+
in StringIO | Pathname | IO
|
22
|
+
true
|
23
|
+
else
|
24
|
+
false
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# @param other [Object]
|
29
|
+
#
|
30
|
+
# @return [Boolean]
|
31
|
+
def self.==(other) = other.is_a?(Class) && other <= Dodopayments::Internal::Type::IOLike
|
32
|
+
|
33
|
+
class << self
|
34
|
+
# @api private
|
35
|
+
#
|
36
|
+
# @param value [StringIO, String, Object]
|
37
|
+
#
|
38
|
+
# @param state [Hash{Symbol=>Object}] .
|
39
|
+
#
|
40
|
+
# @option state [Boolean, :strong] :strictness
|
41
|
+
#
|
42
|
+
# @option state [Hash{Symbol=>Object}] :exactness
|
43
|
+
#
|
44
|
+
# @option state [Integer] :branched
|
45
|
+
#
|
46
|
+
# @return [StringIO, Object]
|
47
|
+
def coerce(value, state:)
|
48
|
+
exactness = state.fetch(:exactness)
|
49
|
+
case value
|
50
|
+
in String
|
51
|
+
exactness[:yes] += 1
|
52
|
+
StringIO.new(value)
|
53
|
+
in StringIO
|
54
|
+
exactness[:yes] += 1
|
55
|
+
value
|
56
|
+
else
|
57
|
+
exactness[:no] += 1
|
58
|
+
value
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# @!parse
|
63
|
+
# # @api private
|
64
|
+
# #
|
65
|
+
# # @param value [Pathname, StringIO, IO, String, Object]
|
66
|
+
# #
|
67
|
+
# # @param state [Hash{Symbol=>Object}] .
|
68
|
+
# #
|
69
|
+
# # @option state [Boolean] :can_retry
|
70
|
+
# #
|
71
|
+
# # @return [Pathname, StringIO, IO, String, Object]
|
72
|
+
# def dump(value, state:) = super
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Dodopayments
|
4
|
+
module Internal
|
5
|
+
module Type
|
6
|
+
# @api private
|
7
|
+
module RequestParameters
|
8
|
+
# @!parse
|
9
|
+
# # Options to specify HTTP behaviour for this request.
|
10
|
+
# # @return [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
|
11
|
+
# attr_accessor :request_options
|
12
|
+
|
13
|
+
# @param mod [Module]
|
14
|
+
def self.included(mod)
|
15
|
+
return unless mod <= Dodopayments::Internal::Type::BaseModel
|
16
|
+
|
17
|
+
mod.extend(Dodopayments::Internal::Type::RequestParameters::Converter)
|
18
|
+
mod.optional(:request_options, Dodopayments::RequestOptions)
|
19
|
+
end
|
20
|
+
|
21
|
+
# @api private
|
22
|
+
module Converter
|
23
|
+
# @api private
|
24
|
+
#
|
25
|
+
# @param params [Object]
|
26
|
+
#
|
27
|
+
# @return [Array(Object, Hash{Symbol=>Object})]
|
28
|
+
def dump_request(params)
|
29
|
+
state = {can_retry: true}
|
30
|
+
case (dumped = dump(params, state: state))
|
31
|
+
in Hash
|
32
|
+
options = Dodopayments::Internal::Util.coerce_hash(dumped[:request_options])
|
33
|
+
request_options =
|
34
|
+
case [options, state.fetch(:can_retry)]
|
35
|
+
in [Hash | nil, false]
|
36
|
+
{**options.to_h, max_retries: 0}
|
37
|
+
else
|
38
|
+
options
|
39
|
+
end
|
40
|
+
[dumped.except(:request_options), request_options]
|
41
|
+
else
|
42
|
+
[dumped, nil]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|