dodopayments 0.0.1.pre.alpha.0 → 1.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. checksums.yaml +4 -4
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +132 -0
  4. data/README.md +84 -23
  5. data/SECURITY.md +27 -0
  6. data/lib/dodopayments/client.rb +15 -19
  7. data/lib/dodopayments/errors.rb +168 -159
  8. data/lib/dodopayments/internal/default_page_number_pagination.rb +91 -0
  9. data/lib/dodopayments/internal/transport/base_client.rb +486 -0
  10. data/lib/dodopayments/internal/transport/pooled_net_requester.rb +197 -0
  11. data/lib/dodopayments/internal/type/array_of.rb +143 -0
  12. data/lib/dodopayments/internal/type/base_model.rb +423 -0
  13. data/lib/dodopayments/internal/type/base_page.rb +47 -0
  14. data/lib/dodopayments/internal/type/boolean.rb +60 -0
  15. data/lib/dodopayments/internal/type/converter.rb +271 -0
  16. data/lib/dodopayments/internal/type/enum.rb +129 -0
  17. data/lib/dodopayments/internal/type/hash_of.rb +163 -0
  18. data/lib/dodopayments/internal/type/io_like.rb +77 -0
  19. data/lib/dodopayments/internal/type/request_parameters.rb +49 -0
  20. data/lib/dodopayments/internal/type/union.rb +232 -0
  21. data/lib/dodopayments/internal/type/unknown.rb +64 -0
  22. data/lib/dodopayments/internal/util.rb +782 -0
  23. data/lib/dodopayments/internal.rb +12 -0
  24. data/lib/dodopayments/models/attach_existing_customer.rb +2 -2
  25. data/lib/dodopayments/models/billing_address.rb +2 -2
  26. data/lib/dodopayments/models/country_code.rb +7 -3
  27. data/lib/dodopayments/models/create_new_customer.rb +5 -5
  28. data/lib/dodopayments/models/customer.rb +3 -2
  29. data/lib/dodopayments/models/customer_create_params.rb +5 -4
  30. data/lib/dodopayments/models/customer_limited_details.rb +2 -2
  31. data/lib/dodopayments/models/customer_list_params.rb +5 -4
  32. data/lib/dodopayments/models/customer_portal_session.rb +2 -2
  33. data/lib/dodopayments/models/customer_request.rb +5 -6
  34. data/lib/dodopayments/models/customer_retrieve_params.rb +5 -4
  35. data/lib/dodopayments/models/customer_update_params.rb +5 -4
  36. data/lib/dodopayments/models/customers/customer_portal_create_params.rb +6 -5
  37. data/lib/dodopayments/models/discount.rb +7 -6
  38. data/lib/dodopayments/models/discount_create_params.rb +13 -12
  39. data/lib/dodopayments/models/discount_delete_params.rb +5 -4
  40. data/lib/dodopayments/models/discount_list_params.rb +5 -4
  41. data/lib/dodopayments/models/discount_retrieve_params.rb +5 -4
  42. data/lib/dodopayments/models/discount_type.rb +7 -2
  43. data/lib/dodopayments/models/discount_update_params.rb +11 -10
  44. data/lib/dodopayments/models/dispute.rb +4 -3
  45. data/lib/dodopayments/models/dispute_list_params.rb +5 -4
  46. data/lib/dodopayments/models/dispute_retrieve_params.rb +5 -4
  47. data/lib/dodopayments/models/dispute_stage.rb +7 -2
  48. data/lib/dodopayments/models/dispute_status.rb +7 -2
  49. data/lib/dodopayments/models/intent_status.rb +7 -2
  50. data/lib/dodopayments/models/invoices/payment_retrieve_params.rb +5 -4
  51. data/lib/dodopayments/models/license_activate_params.rb +5 -4
  52. data/lib/dodopayments/models/license_deactivate_params.rb +5 -4
  53. data/lib/dodopayments/models/license_key.rb +4 -3
  54. data/lib/dodopayments/models/license_key_duration.rb +2 -2
  55. data/lib/dodopayments/models/license_key_instance.rb +3 -2
  56. data/lib/dodopayments/models/license_key_instance_list_params.rb +5 -4
  57. data/lib/dodopayments/models/license_key_instance_retrieve_params.rb +5 -4
  58. data/lib/dodopayments/models/license_key_instance_update_params.rb +5 -4
  59. data/lib/dodopayments/models/license_key_list_params.rb +5 -4
  60. data/lib/dodopayments/models/license_key_retrieve_params.rb +5 -4
  61. data/lib/dodopayments/models/license_key_status.rb +7 -2
  62. data/lib/dodopayments/models/license_key_update_params.rb +9 -8
  63. data/lib/dodopayments/models/license_validate_params.rb +5 -4
  64. data/lib/dodopayments/models/license_validate_response.rb +4 -3
  65. data/lib/dodopayments/models/misc_list_supported_countries_params.rb +5 -4
  66. data/lib/dodopayments/models/misc_list_supported_countries_response.rb +2 -1
  67. data/lib/dodopayments/models/one_time_product_cart_item.rb +4 -3
  68. data/lib/dodopayments/models/payment.rb +18 -11
  69. data/lib/dodopayments/models/payment_create_params.rb +232 -9
  70. data/lib/dodopayments/models/payment_create_response.rb +6 -5
  71. data/lib/dodopayments/models/payment_list_params.rb +5 -4
  72. data/lib/dodopayments/models/payment_list_response.rb +12 -5
  73. data/lib/dodopayments/models/payment_retrieve_params.rb +5 -4
  74. data/lib/dodopayments/models/payout_list_params.rb +5 -4
  75. data/lib/dodopayments/models/payout_list_response.rb +21 -6
  76. data/lib/dodopayments/models/price.rb +41 -30
  77. data/lib/dodopayments/models/product.rb +17 -10
  78. data/lib/dodopayments/models/product_create_params.rb +16 -11
  79. data/lib/dodopayments/models/product_delete_params.rb +5 -4
  80. data/lib/dodopayments/models/product_list_params.rb +10 -9
  81. data/lib/dodopayments/models/product_list_response.rb +30 -17
  82. data/lib/dodopayments/models/product_retrieve_params.rb +5 -4
  83. data/lib/dodopayments/models/product_unarchive_params.rb +5 -4
  84. data/lib/dodopayments/models/product_update_params.rb +22 -17
  85. data/lib/dodopayments/models/products/image_update_params.rb +6 -5
  86. data/lib/dodopayments/models/products/image_update_response.rb +3 -2
  87. data/lib/dodopayments/models/refund.rb +11 -4
  88. data/lib/dodopayments/models/refund_create_params.rb +6 -13
  89. data/lib/dodopayments/models/refund_list_params.rb +5 -4
  90. data/lib/dodopayments/models/refund_retrieve_params.rb +5 -4
  91. data/lib/dodopayments/models/refund_status.rb +7 -2
  92. data/lib/dodopayments/models/subscription.rb +21 -7
  93. data/lib/dodopayments/models/subscription_charge_params.rb +27 -0
  94. data/lib/dodopayments/models/subscription_charge_response.rb +20 -0
  95. data/lib/dodopayments/models/subscription_create_params.rb +262 -8
  96. data/lib/dodopayments/models/subscription_create_response.rb +6 -5
  97. data/lib/dodopayments/models/subscription_list_params.rb +5 -4
  98. data/lib/dodopayments/models/subscription_retrieve_params.rb +5 -4
  99. data/lib/dodopayments/models/subscription_status.rb +7 -2
  100. data/lib/dodopayments/models/subscription_update_params.rb +19 -6
  101. data/lib/dodopayments/models/time_interval.rb +7 -2
  102. data/lib/dodopayments/models/webhook_event.rb +3 -2
  103. data/lib/dodopayments/models/webhook_event_list_params.rb +6 -5
  104. data/lib/dodopayments/models/webhook_event_retrieve_params.rb +5 -4
  105. data/lib/dodopayments/request_options.rb +12 -47
  106. data/lib/dodopayments/resources/customers/customer_portal.rb +10 -8
  107. data/lib/dodopayments/resources/customers.rb +30 -29
  108. data/lib/dodopayments/resources/discounts.rb +45 -69
  109. data/lib/dodopayments/resources/disputes.rb +20 -22
  110. data/lib/dodopayments/resources/invoices/payments.rb +8 -5
  111. data/lib/dodopayments/resources/invoices.rb +2 -0
  112. data/lib/dodopayments/resources/license_key_instances.rb +23 -21
  113. data/lib/dodopayments/resources/license_keys.rb +27 -32
  114. data/lib/dodopayments/resources/licenses.rb +20 -18
  115. data/lib/dodopayments/resources/misc.rb +7 -3
  116. data/lib/dodopayments/resources/payments.rb +36 -43
  117. data/lib/dodopayments/resources/payouts.rb +9 -7
  118. data/lib/dodopayments/resources/products/images.rb +9 -7
  119. data/lib/dodopayments/resources/products.rb +59 -87
  120. data/lib/dodopayments/resources/refunds.rb +25 -29
  121. data/lib/dodopayments/resources/subscriptions.rb +68 -54
  122. data/lib/dodopayments/resources/webhook_events.rb +20 -21
  123. data/lib/dodopayments/version.rb +1 -1
  124. data/lib/dodopayments.rb +34 -7
  125. data/manifest.yaml +1 -0
  126. data/rbi/lib/dodopayments/client.rbi +32 -47
  127. data/rbi/lib/dodopayments/errors.rbi +125 -161
  128. data/rbi/lib/dodopayments/internal/default_page_number_pagination.rbi +18 -0
  129. data/rbi/lib/dodopayments/internal/transport/base_client.rbi +199 -0
  130. data/rbi/lib/dodopayments/internal/transport/pooled_net_requester.rbi +60 -0
  131. data/rbi/lib/dodopayments/internal/type/array_of.rbi +85 -0
  132. data/rbi/lib/dodopayments/internal/type/base_model.rbi +214 -0
  133. data/rbi/lib/dodopayments/internal/type/base_page.rbi +36 -0
  134. data/rbi/lib/dodopayments/internal/type/boolean.rbi +48 -0
  135. data/rbi/lib/dodopayments/internal/type/converter.rbi +120 -0
  136. data/rbi/lib/dodopayments/internal/type/enum.rbi +69 -0
  137. data/rbi/lib/dodopayments/internal/type/hash_of.rbi +85 -0
  138. data/rbi/lib/dodopayments/internal/type/io_like.rbi +46 -0
  139. data/rbi/lib/dodopayments/internal/type/request_parameters.rbi +21 -0
  140. data/rbi/lib/dodopayments/internal/type/union.rbi +77 -0
  141. data/rbi/lib/dodopayments/internal/type/unknown.rbi +40 -0
  142. data/rbi/lib/dodopayments/internal/util.rbi +297 -0
  143. data/rbi/lib/dodopayments/internal.rbi +12 -0
  144. data/rbi/lib/dodopayments/models/attach_existing_customer.rbi +4 -11
  145. data/rbi/lib/dodopayments/models/billing_address.rbi +20 -38
  146. data/rbi/lib/dodopayments/models/country_code.rbi +256 -256
  147. data/rbi/lib/dodopayments/models/create_new_customer.rbi +11 -30
  148. data/rbi/lib/dodopayments/models/customer.rbi +9 -41
  149. data/rbi/lib/dodopayments/models/customer_create_params.rbi +9 -26
  150. data/rbi/lib/dodopayments/models/customer_limited_details.rbi +6 -23
  151. data/rbi/lib/dodopayments/models/customer_list_params.rbi +8 -20
  152. data/rbi/lib/dodopayments/models/customer_portal_session.rbi +4 -11
  153. data/rbi/lib/dodopayments/models/customer_request.rbi +4 -7
  154. data/rbi/lib/dodopayments/models/customer_retrieve_params.rbi +6 -8
  155. data/rbi/lib/dodopayments/models/customer_update_params.rbi +8 -20
  156. data/rbi/lib/dodopayments/models/customers/customer_portal_create_params.rbi +7 -14
  157. data/rbi/lib/dodopayments/models/discount.rbi +20 -78
  158. data/rbi/lib/dodopayments/models/discount_create_params.rbi +23 -61
  159. data/rbi/lib/dodopayments/models/discount_delete_params.rbi +6 -8
  160. data/rbi/lib/dodopayments/models/discount_list_params.rbi +8 -20
  161. data/rbi/lib/dodopayments/models/discount_retrieve_params.rbi +6 -8
  162. data/rbi/lib/dodopayments/models/discount_type.rbi +8 -8
  163. data/rbi/lib/dodopayments/models/discount_update_params.rbi +21 -59
  164. data/rbi/lib/dodopayments/models/dispute.rbi +27 -59
  165. data/rbi/lib/dodopayments/models/dispute_list_params.rbi +19 -57
  166. data/rbi/lib/dodopayments/models/dispute_retrieve_params.rbi +6 -8
  167. data/rbi/lib/dodopayments/models/dispute_stage.rbi +10 -10
  168. data/rbi/lib/dodopayments/models/dispute_status.rbi +14 -14
  169. data/rbi/lib/dodopayments/models/intent_status.rbi +22 -18
  170. data/rbi/lib/dodopayments/models/invoices/payment_retrieve_params.rbi +6 -8
  171. data/rbi/lib/dodopayments/models/license_activate_params.rbi +8 -20
  172. data/rbi/lib/dodopayments/models/license_deactivate_params.rbi +8 -20
  173. data/rbi/lib/dodopayments/models/license_key.rbi +19 -82
  174. data/rbi/lib/dodopayments/models/license_key_duration.rbi +8 -20
  175. data/rbi/lib/dodopayments/models/license_key_instance.rbi +8 -35
  176. data/rbi/lib/dodopayments/models/license_key_instance_list_params.rbi +9 -26
  177. data/rbi/lib/dodopayments/models/license_key_instance_retrieve_params.rbi +6 -8
  178. data/rbi/lib/dodopayments/models/license_key_instance_update_params.rbi +7 -17
  179. data/rbi/lib/dodopayments/models/license_key_list_params.rbi +21 -40
  180. data/rbi/lib/dodopayments/models/license_key_retrieve_params.rbi +6 -8
  181. data/rbi/lib/dodopayments/models/license_key_status.rbi +10 -10
  182. data/rbi/lib/dodopayments/models/license_key_update_params.rbi +12 -29
  183. data/rbi/lib/dodopayments/models/license_validate_params.rbi +8 -20
  184. data/rbi/lib/dodopayments/models/license_validate_response.rbi +4 -11
  185. data/rbi/lib/dodopayments/models/misc_list_supported_countries_params.rbi +6 -8
  186. data/rbi/lib/dodopayments/models/misc_list_supported_countries_response.rbi +5 -1
  187. data/rbi/lib/dodopayments/models/one_time_product_cart_item.rbi +8 -24
  188. data/rbi/lib/dodopayments/models/payment.rbi +197 -308
  189. data/rbi/lib/dodopayments/models/payment_create_params.rbi +261 -61
  190. data/rbi/lib/dodopayments/models/payment_create_response.rbi +16 -60
  191. data/rbi/lib/dodopayments/models/payment_list_params.rbi +16 -54
  192. data/rbi/lib/dodopayments/models/payment_list_response.rbi +178 -228
  193. data/rbi/lib/dodopayments/models/payment_retrieve_params.rbi +6 -8
  194. data/rbi/lib/dodopayments/models/payout_list_params.rbi +8 -20
  195. data/rbi/lib/dodopayments/models/payout_list_response.rbi +197 -271
  196. data/rbi/lib/dodopayments/models/price.rbi +368 -464
  197. data/rbi/lib/dodopayments/models/product.rbi +48 -119
  198. data/rbi/lib/dodopayments/models/product_create_params.rbi +46 -86
  199. data/rbi/lib/dodopayments/models/product_delete_params.rbi +6 -8
  200. data/rbi/lib/dodopayments/models/product_list_params.rbi +15 -34
  201. data/rbi/lib/dodopayments/models/product_list_response.rbi +209 -275
  202. data/rbi/lib/dodopayments/models/product_retrieve_params.rbi +6 -8
  203. data/rbi/lib/dodopayments/models/product_unarchive_params.rbi +6 -8
  204. data/rbi/lib/dodopayments/models/product_update_params.rbi +55 -102
  205. data/rbi/lib/dodopayments/models/products/image_update_params.rbi +7 -14
  206. data/rbi/lib/dodopayments/models/products/image_update_response.rbi +5 -17
  207. data/rbi/lib/dodopayments/models/refund.rbi +181 -213
  208. data/rbi/lib/dodopayments/models/refund_create_params.rbi +13 -39
  209. data/rbi/lib/dodopayments/models/refund_list_params.rbi +15 -48
  210. data/rbi/lib/dodopayments/models/refund_retrieve_params.rbi +6 -8
  211. data/rbi/lib/dodopayments/models/refund_status.rbi +11 -11
  212. data/rbi/lib/dodopayments/models/subscription.rbi +202 -283
  213. data/rbi/lib/dodopayments/models/subscription_charge_params.rbi +27 -0
  214. data/rbi/lib/dodopayments/models/subscription_charge_response.rbi +16 -0
  215. data/rbi/lib/dodopayments/models/subscription_create_params.rbi +315 -69
  216. data/rbi/lib/dodopayments/models/subscription_create_response.rbi +15 -51
  217. data/rbi/lib/dodopayments/models/subscription_list_params.rbi +15 -48
  218. data/rbi/lib/dodopayments/models/subscription_retrieve_params.rbi +6 -8
  219. data/rbi/lib/dodopayments/models/subscription_status.rbi +14 -14
  220. data/rbi/lib/dodopayments/models/subscription_update_params.rbi +25 -21
  221. data/rbi/lib/dodopayments/models/time_interval.rbi +11 -11
  222. data/rbi/lib/dodopayments/models/webhook_event.rbi +11 -54
  223. data/rbi/lib/dodopayments/models/webhook_event_list_params.rbi +12 -45
  224. data/rbi/lib/dodopayments/models/webhook_event_retrieve_params.rbi +6 -8
  225. data/rbi/lib/dodopayments/request_options.rbi +18 -81
  226. data/rbi/lib/dodopayments/resources/customers/customer_portal.rbi +5 -7
  227. data/rbi/lib/dodopayments/resources/customers.rbi +12 -20
  228. data/rbi/lib/dodopayments/resources/discounts.rbi +27 -37
  229. data/rbi/lib/dodopayments/resources/disputes.rbi +9 -13
  230. data/rbi/lib/dodopayments/resources/invoices/payments.rbi +4 -5
  231. data/rbi/lib/dodopayments/resources/invoices.rbi +3 -4
  232. data/rbi/lib/dodopayments/resources/license_key_instances.rbi +9 -15
  233. data/rbi/lib/dodopayments/resources/license_keys.rbi +13 -19
  234. data/rbi/lib/dodopayments/resources/licenses.rbi +8 -11
  235. data/rbi/lib/dodopayments/resources/misc.rbi +12 -6
  236. data/rbi/lib/dodopayments/resources/payments.rbi +32 -21
  237. data/rbi/lib/dodopayments/resources/payouts.rbi +5 -7
  238. data/rbi/lib/dodopayments/resources/products/images.rbi +4 -6
  239. data/rbi/lib/dodopayments/resources/products.rbi +43 -44
  240. data/rbi/lib/dodopayments/resources/refunds.rbi +10 -20
  241. data/rbi/lib/dodopayments/resources/subscriptions.rbi +57 -24
  242. data/rbi/lib/dodopayments/resources/webhook_events.rbi +7 -10
  243. data/rbi/lib/dodopayments/version.rbi +1 -1
  244. data/sig/dodopayments/client.rbs +8 -8
  245. data/sig/dodopayments/errors.rbs +98 -96
  246. data/sig/dodopayments/internal/default_page_number_pagination.rbs +11 -0
  247. data/sig/dodopayments/internal/transport/base_client.rbs +110 -0
  248. data/sig/dodopayments/internal/transport/pooled_net_requester.rbs +41 -0
  249. data/sig/dodopayments/internal/type/array_of.rbs +43 -0
  250. data/sig/dodopayments/internal/type/base_model.rbs +92 -0
  251. data/sig/dodopayments/internal/type/base_page.rbs +24 -0
  252. data/sig/dodopayments/internal/type/boolean.rbs +23 -0
  253. data/sig/dodopayments/internal/type/converter.rbs +54 -0
  254. data/sig/dodopayments/internal/type/enum.rbs +29 -0
  255. data/sig/dodopayments/internal/type/hash_of.rbs +43 -0
  256. data/sig/dodopayments/internal/type/io_like.rbs +23 -0
  257. data/sig/dodopayments/internal/type/request_parameters.rbs +15 -0
  258. data/sig/dodopayments/internal/type/union.rbs +47 -0
  259. data/sig/dodopayments/internal/type/unknown.rbs +23 -0
  260. data/sig/dodopayments/internal/util.rbs +156 -0
  261. data/sig/dodopayments/internal.rbs +5 -0
  262. data/sig/dodopayments/models/attach_existing_customer.rbs +2 -7
  263. data/sig/dodopayments/models/billing_address.rbs +8 -12
  264. data/sig/dodopayments/models/country_code.rbs +4 -2
  265. data/sig/dodopayments/models/create_new_customer.rbs +7 -12
  266. data/sig/dodopayments/models/customer.rbs +9 -13
  267. data/sig/dodopayments/models/customer_create_params.rbs +10 -15
  268. data/sig/dodopayments/models/customer_limited_details.rbs +2 -7
  269. data/sig/dodopayments/models/customer_list_params.rbs +9 -14
  270. data/sig/dodopayments/models/customer_portal_session.rbs +2 -7
  271. data/sig/dodopayments/models/customer_request.rbs +4 -2
  272. data/sig/dodopayments/models/customer_retrieve_params.rbs +6 -10
  273. data/sig/dodopayments/models/customer_update_params.rbs +9 -14
  274. data/sig/dodopayments/models/customers/customer_portal_create_params.rbs +8 -13
  275. data/sig/dodopayments/models/discount.rbs +14 -18
  276. data/sig/dodopayments/models/discount_create_params.rbs +14 -19
  277. data/sig/dodopayments/models/discount_delete_params.rbs +6 -10
  278. data/sig/dodopayments/models/discount_list_params.rbs +9 -14
  279. data/sig/dodopayments/models/discount_retrieve_params.rbs +6 -10
  280. data/sig/dodopayments/models/discount_type.rbs +4 -2
  281. data/sig/dodopayments/models/discount_update_params.rbs +14 -19
  282. data/sig/dodopayments/models/dispute.rbs +11 -15
  283. data/sig/dodopayments/models/dispute_list_params.rbs +14 -19
  284. data/sig/dodopayments/models/dispute_retrieve_params.rbs +6 -10
  285. data/sig/dodopayments/models/dispute_stage.rbs +4 -2
  286. data/sig/dodopayments/models/dispute_status.rbs +4 -2
  287. data/sig/dodopayments/models/intent_status.rbs +4 -2
  288. data/sig/dodopayments/models/invoices/payment_retrieve_params.rbs +6 -10
  289. data/sig/dodopayments/models/license_activate_params.rbs +10 -14
  290. data/sig/dodopayments/models/license_deactivate_params.rbs +9 -14
  291. data/sig/dodopayments/models/license_key.rbs +15 -19
  292. data/sig/dodopayments/models/license_key_duration.rbs +5 -7
  293. data/sig/dodopayments/models/license_key_instance.rbs +8 -13
  294. data/sig/dodopayments/models/license_key_instance_list_params.rbs +10 -15
  295. data/sig/dodopayments/models/license_key_instance_retrieve_params.rbs +5 -10
  296. data/sig/dodopayments/models/license_key_instance_update_params.rbs +8 -10
  297. data/sig/dodopayments/models/license_key_list_params.rbs +12 -17
  298. data/sig/dodopayments/models/license_key_retrieve_params.rbs +6 -10
  299. data/sig/dodopayments/models/license_key_status.rbs +4 -2
  300. data/sig/dodopayments/models/license_key_update_params.rbs +10 -15
  301. data/sig/dodopayments/models/license_validate_params.rbs +9 -14
  302. data/sig/dodopayments/models/license_validate_response.rbs +2 -7
  303. data/sig/dodopayments/models/misc_list_supported_countries_params.rbs +5 -10
  304. data/sig/dodopayments/models/one_time_product_cart_item.rbs +6 -7
  305. data/sig/dodopayments/models/payment.rbs +28 -35
  306. data/sig/dodopayments/models/payment_create_params.rbs +373 -20
  307. data/sig/dodopayments/models/payment_create_response.rbs +11 -16
  308. data/sig/dodopayments/models/payment_list_params.rbs +14 -19
  309. data/sig/dodopayments/models/payment_list_response.rbs +17 -20
  310. data/sig/dodopayments/models/payment_retrieve_params.rbs +6 -10
  311. data/sig/dodopayments/models/payout_list_params.rbs +9 -14
  312. data/sig/dodopayments/models/payout_list_response.rbs +30 -28
  313. data/sig/dodopayments/models/price.rbs +37 -41
  314. data/sig/dodopayments/models/product.rbs +22 -24
  315. data/sig/dodopayments/models/product_create_params.rbs +20 -23
  316. data/sig/dodopayments/models/product_delete_params.rbs +6 -10
  317. data/sig/dodopayments/models/product_list_params.rbs +11 -16
  318. data/sig/dodopayments/models/product_list_response.rbs +24 -25
  319. data/sig/dodopayments/models/product_retrieve_params.rbs +6 -10
  320. data/sig/dodopayments/models/product_unarchive_params.rbs +6 -10
  321. data/sig/dodopayments/models/product_update_params.rbs +21 -24
  322. data/sig/dodopayments/models/products/image_update_params.rbs +9 -13
  323. data/sig/dodopayments/models/products/image_update_response.rbs +2 -7
  324. data/sig/dodopayments/models/refund.rbs +15 -15
  325. data/sig/dodopayments/models/refund_create_params.rbs +10 -18
  326. data/sig/dodopayments/models/refund_list_params.rbs +13 -18
  327. data/sig/dodopayments/models/refund_retrieve_params.rbs +6 -10
  328. data/sig/dodopayments/models/refund_status.rbs +4 -2
  329. data/sig/dodopayments/models/subscription.rbs +29 -27
  330. data/sig/dodopayments/models/subscription_charge_params.rbs +21 -0
  331. data/sig/dodopayments/models/subscription_charge_response.rbs +13 -0
  332. data/sig/dodopayments/models/subscription_create_params.rbs +391 -22
  333. data/sig/dodopayments/models/subscription_create_response.rbs +10 -15
  334. data/sig/dodopayments/models/subscription_list_params.rbs +13 -18
  335. data/sig/dodopayments/models/subscription_retrieve_params.rbs +6 -10
  336. data/sig/dodopayments/models/subscription_status.rbs +4 -2
  337. data/sig/dodopayments/models/subscription_update_params.rbs +18 -15
  338. data/sig/dodopayments/models/time_interval.rbs +4 -2
  339. data/sig/dodopayments/models/webhook_event.rbs +11 -15
  340. data/sig/dodopayments/models/webhook_event_list_params.rbs +13 -18
  341. data/sig/dodopayments/models/webhook_event_retrieve_params.rbs +6 -10
  342. data/sig/dodopayments/request_options.rbs +3 -13
  343. data/sig/dodopayments/resources/customers/customer_portal.rbs +5 -11
  344. data/sig/dodopayments/resources/customers.rbs +21 -42
  345. data/sig/dodopayments/resources/discounts.rbs +34 -61
  346. data/sig/dodopayments/resources/disputes.rbs +14 -24
  347. data/sig/dodopayments/resources/invoices/payments.rbs +4 -10
  348. data/sig/dodopayments/resources/license_key_instances.rbs +15 -32
  349. data/sig/dodopayments/resources/license_keys.rbs +19 -36
  350. data/sig/dodopayments/resources/licenses.rbs +15 -30
  351. data/sig/dodopayments/resources/misc.rbs +3 -8
  352. data/sig/dodopayments/resources/payments.rbs +28 -39
  353. data/sig/dodopayments/resources/payouts.rbs +5 -9
  354. data/sig/dodopayments/resources/products/images.rbs +5 -11
  355. data/sig/dodopayments/resources/products.rbs +45 -71
  356. data/sig/dodopayments/resources/refunds.rbs +18 -33
  357. data/sig/dodopayments/resources/subscriptions.rbs +44 -54
  358. data/sig/dodopayments/resources/webhook_events.rbs +13 -24
  359. data/sig/dodopayments/version.rbs +1 -1
  360. metadata +63 -27
  361. data/lib/dodopayments/base_client.rb +0 -453
  362. data/lib/dodopayments/base_model.rb +0 -1217
  363. data/lib/dodopayments/base_page.rb +0 -62
  364. data/lib/dodopayments/default_page_number_pagination.rb +0 -97
  365. data/lib/dodopayments/extern.rb +0 -9
  366. data/lib/dodopayments/pooled_net_requester.rb +0 -164
  367. data/lib/dodopayments/util.rb +0 -717
  368. data/rbi/lib/dodopayments/base_client.rbi +0 -186
  369. data/rbi/lib/dodopayments/base_model.rbi +0 -606
  370. data/rbi/lib/dodopayments/base_page.rbi +0 -40
  371. data/rbi/lib/dodopayments/default_page_number_pagination.rbi +0 -17
  372. data/rbi/lib/dodopayments/extern.rbi +0 -8
  373. data/rbi/lib/dodopayments/pooled_net_requester.rbi +0 -47
  374. data/rbi/lib/dodopayments/util.rbi +0 -270
  375. data/sig/dodopayments/base_client.rbs +0 -103
  376. data/sig/dodopayments/base_model.rbs +0 -246
  377. data/sig/dodopayments/base_page.rbs +0 -20
  378. data/sig/dodopayments/default_page_number_pagination.rbs +0 -7
  379. data/sig/dodopayments/extern.rbs +0 -4
  380. data/sig/dodopayments/pooled_net_requester.rbs +0 -30
  381. 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