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.
Files changed (380) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +111 -0
  3. data/README.md +84 -23
  4. data/SECURITY.md +27 -0
  5. data/lib/dodopayments/client.rb +14 -19
  6. data/lib/dodopayments/errors.rb +168 -159
  7. data/lib/dodopayments/internal/default_page_number_pagination.rb +91 -0
  8. data/lib/dodopayments/internal/transport/base_client.rb +486 -0
  9. data/lib/dodopayments/internal/transport/pooled_net_requester.rb +193 -0
  10. data/lib/dodopayments/internal/type/array_of.rb +143 -0
  11. data/lib/dodopayments/internal/type/base_model.rb +407 -0
  12. data/lib/dodopayments/internal/type/base_page.rb +47 -0
  13. data/lib/dodopayments/internal/type/boolean.rb +60 -0
  14. data/lib/dodopayments/internal/type/converter.rb +271 -0
  15. data/lib/dodopayments/internal/type/enum.rb +129 -0
  16. data/lib/dodopayments/internal/type/hash_of.rb +163 -0
  17. data/lib/dodopayments/internal/type/io_like.rb +77 -0
  18. data/lib/dodopayments/internal/type/request_parameters.rb +49 -0
  19. data/lib/dodopayments/internal/type/union.rb +232 -0
  20. data/lib/dodopayments/internal/type/unknown.rb +64 -0
  21. data/lib/dodopayments/internal/util.rb +782 -0
  22. data/lib/dodopayments/internal.rb +12 -0
  23. data/lib/dodopayments/models/attach_existing_customer.rb +2 -2
  24. data/lib/dodopayments/models/billing_address.rb +2 -2
  25. data/lib/dodopayments/models/country_code.rb +7 -3
  26. data/lib/dodopayments/models/create_new_customer.rb +5 -5
  27. data/lib/dodopayments/models/customer.rb +3 -2
  28. data/lib/dodopayments/models/customer_create_params.rb +5 -4
  29. data/lib/dodopayments/models/customer_limited_details.rb +2 -2
  30. data/lib/dodopayments/models/customer_list_params.rb +5 -4
  31. data/lib/dodopayments/models/customer_portal_session.rb +2 -2
  32. data/lib/dodopayments/models/customer_request.rb +5 -6
  33. data/lib/dodopayments/models/customer_retrieve_params.rb +5 -4
  34. data/lib/dodopayments/models/customer_update_params.rb +5 -4
  35. data/lib/dodopayments/models/customers/customer_portal_create_params.rb +6 -5
  36. data/lib/dodopayments/models/discount.rb +7 -6
  37. data/lib/dodopayments/models/discount_create_params.rb +13 -12
  38. data/lib/dodopayments/models/discount_delete_params.rb +5 -4
  39. data/lib/dodopayments/models/discount_list_params.rb +5 -4
  40. data/lib/dodopayments/models/discount_retrieve_params.rb +5 -4
  41. data/lib/dodopayments/models/discount_type.rb +7 -2
  42. data/lib/dodopayments/models/discount_update_params.rb +11 -10
  43. data/lib/dodopayments/models/dispute.rb +4 -3
  44. data/lib/dodopayments/models/dispute_list_params.rb +5 -4
  45. data/lib/dodopayments/models/dispute_retrieve_params.rb +5 -4
  46. data/lib/dodopayments/models/dispute_stage.rb +7 -2
  47. data/lib/dodopayments/models/dispute_status.rb +7 -2
  48. data/lib/dodopayments/models/intent_status.rb +7 -2
  49. data/lib/dodopayments/models/invoices/payment_retrieve_params.rb +5 -4
  50. data/lib/dodopayments/models/license_activate_params.rb +5 -4
  51. data/lib/dodopayments/models/license_deactivate_params.rb +5 -4
  52. data/lib/dodopayments/models/license_key.rb +4 -3
  53. data/lib/dodopayments/models/license_key_duration.rb +2 -2
  54. data/lib/dodopayments/models/license_key_instance.rb +3 -2
  55. data/lib/dodopayments/models/license_key_instance_list_params.rb +5 -4
  56. data/lib/dodopayments/models/license_key_instance_retrieve_params.rb +5 -4
  57. data/lib/dodopayments/models/license_key_instance_update_params.rb +5 -4
  58. data/lib/dodopayments/models/license_key_list_params.rb +5 -4
  59. data/lib/dodopayments/models/license_key_retrieve_params.rb +5 -4
  60. data/lib/dodopayments/models/license_key_status.rb +7 -2
  61. data/lib/dodopayments/models/license_key_update_params.rb +9 -8
  62. data/lib/dodopayments/models/license_validate_params.rb +5 -4
  63. data/lib/dodopayments/models/license_validate_response.rb +4 -3
  64. data/lib/dodopayments/models/misc_list_supported_countries_params.rb +5 -4
  65. data/lib/dodopayments/models/misc_list_supported_countries_response.rb +2 -1
  66. data/lib/dodopayments/models/one_time_product_cart_item.rb +4 -3
  67. data/lib/dodopayments/models/payment.rb +18 -11
  68. data/lib/dodopayments/models/payment_create_params.rb +231 -9
  69. data/lib/dodopayments/models/payment_create_response.rb +6 -5
  70. data/lib/dodopayments/models/payment_list_params.rb +5 -4
  71. data/lib/dodopayments/models/payment_list_response.rb +12 -5
  72. data/lib/dodopayments/models/payment_retrieve_params.rb +5 -4
  73. data/lib/dodopayments/models/payout_list_params.rb +5 -4
  74. data/lib/dodopayments/models/payout_list_response.rb +21 -6
  75. data/lib/dodopayments/models/price.rb +41 -30
  76. data/lib/dodopayments/models/product.rb +17 -10
  77. data/lib/dodopayments/models/product_create_params.rb +16 -11
  78. data/lib/dodopayments/models/product_delete_params.rb +5 -4
  79. data/lib/dodopayments/models/product_list_params.rb +10 -9
  80. data/lib/dodopayments/models/product_list_response.rb +30 -17
  81. data/lib/dodopayments/models/product_retrieve_params.rb +5 -4
  82. data/lib/dodopayments/models/product_unarchive_params.rb +5 -4
  83. data/lib/dodopayments/models/product_update_params.rb +22 -17
  84. data/lib/dodopayments/models/products/image_update_params.rb +6 -5
  85. data/lib/dodopayments/models/products/image_update_response.rb +3 -2
  86. data/lib/dodopayments/models/refund.rb +11 -4
  87. data/lib/dodopayments/models/refund_create_params.rb +6 -13
  88. data/lib/dodopayments/models/refund_list_params.rb +5 -4
  89. data/lib/dodopayments/models/refund_retrieve_params.rb +5 -4
  90. data/lib/dodopayments/models/refund_status.rb +7 -2
  91. data/lib/dodopayments/models/subscription.rb +21 -7
  92. data/lib/dodopayments/models/subscription_charge_params.rb +27 -0
  93. data/lib/dodopayments/models/subscription_charge_response.rb +20 -0
  94. data/lib/dodopayments/models/subscription_create_params.rb +261 -8
  95. data/lib/dodopayments/models/subscription_create_response.rb +6 -5
  96. data/lib/dodopayments/models/subscription_list_params.rb +5 -4
  97. data/lib/dodopayments/models/subscription_retrieve_params.rb +5 -4
  98. data/lib/dodopayments/models/subscription_status.rb +7 -2
  99. data/lib/dodopayments/models/subscription_update_params.rb +19 -6
  100. data/lib/dodopayments/models/time_interval.rb +7 -2
  101. data/lib/dodopayments/models/webhook_event.rb +3 -2
  102. data/lib/dodopayments/models/webhook_event_list_params.rb +6 -5
  103. data/lib/dodopayments/models/webhook_event_retrieve_params.rb +5 -4
  104. data/lib/dodopayments/request_options.rb +12 -47
  105. data/lib/dodopayments/resources/customers/customer_portal.rb +10 -8
  106. data/lib/dodopayments/resources/customers.rb +30 -29
  107. data/lib/dodopayments/resources/discounts.rb +45 -69
  108. data/lib/dodopayments/resources/disputes.rb +20 -22
  109. data/lib/dodopayments/resources/invoices/payments.rb +8 -5
  110. data/lib/dodopayments/resources/invoices.rb +2 -0
  111. data/lib/dodopayments/resources/license_key_instances.rb +23 -21
  112. data/lib/dodopayments/resources/license_keys.rb +27 -32
  113. data/lib/dodopayments/resources/licenses.rb +20 -18
  114. data/lib/dodopayments/resources/misc.rb +7 -3
  115. data/lib/dodopayments/resources/payments.rb +36 -43
  116. data/lib/dodopayments/resources/payouts.rb +9 -7
  117. data/lib/dodopayments/resources/products/images.rb +9 -7
  118. data/lib/dodopayments/resources/products.rb +59 -87
  119. data/lib/dodopayments/resources/refunds.rb +25 -29
  120. data/lib/dodopayments/resources/subscriptions.rb +68 -54
  121. data/lib/dodopayments/resources/webhook_events.rb +20 -21
  122. data/lib/dodopayments/version.rb +1 -1
  123. data/lib/dodopayments.rb +34 -7
  124. data/manifest.yaml +1 -0
  125. data/rbi/lib/dodopayments/client.rbi +32 -47
  126. data/rbi/lib/dodopayments/errors.rbi +125 -161
  127. data/rbi/lib/dodopayments/internal/default_page_number_pagination.rbi +18 -0
  128. data/rbi/lib/dodopayments/internal/transport/base_client.rbi +199 -0
  129. data/rbi/lib/dodopayments/internal/transport/pooled_net_requester.rbi +60 -0
  130. data/rbi/lib/dodopayments/internal/type/array_of.rbi +85 -0
  131. data/rbi/lib/dodopayments/internal/type/base_model.rbi +203 -0
  132. data/rbi/lib/dodopayments/internal/type/base_page.rbi +36 -0
  133. data/rbi/lib/dodopayments/internal/type/boolean.rbi +48 -0
  134. data/rbi/lib/dodopayments/internal/type/converter.rbi +120 -0
  135. data/rbi/lib/dodopayments/internal/type/enum.rbi +69 -0
  136. data/rbi/lib/dodopayments/internal/type/hash_of.rbi +85 -0
  137. data/rbi/lib/dodopayments/internal/type/io_like.rbi +46 -0
  138. data/rbi/lib/dodopayments/internal/type/request_parameters.rbi +21 -0
  139. data/rbi/lib/dodopayments/internal/type/union.rbi +77 -0
  140. data/rbi/lib/dodopayments/internal/type/unknown.rbi +40 -0
  141. data/rbi/lib/dodopayments/internal/util.rbi +297 -0
  142. data/rbi/lib/dodopayments/internal.rbi +12 -0
  143. data/rbi/lib/dodopayments/models/attach_existing_customer.rbi +4 -11
  144. data/rbi/lib/dodopayments/models/billing_address.rbi +20 -38
  145. data/rbi/lib/dodopayments/models/country_code.rbi +256 -256
  146. data/rbi/lib/dodopayments/models/create_new_customer.rbi +11 -30
  147. data/rbi/lib/dodopayments/models/customer.rbi +9 -41
  148. data/rbi/lib/dodopayments/models/customer_create_params.rbi +9 -26
  149. data/rbi/lib/dodopayments/models/customer_limited_details.rbi +6 -23
  150. data/rbi/lib/dodopayments/models/customer_list_params.rbi +8 -20
  151. data/rbi/lib/dodopayments/models/customer_portal_session.rbi +4 -11
  152. data/rbi/lib/dodopayments/models/customer_request.rbi +4 -7
  153. data/rbi/lib/dodopayments/models/customer_retrieve_params.rbi +6 -8
  154. data/rbi/lib/dodopayments/models/customer_update_params.rbi +8 -20
  155. data/rbi/lib/dodopayments/models/customers/customer_portal_create_params.rbi +7 -14
  156. data/rbi/lib/dodopayments/models/discount.rbi +20 -78
  157. data/rbi/lib/dodopayments/models/discount_create_params.rbi +23 -61
  158. data/rbi/lib/dodopayments/models/discount_delete_params.rbi +6 -8
  159. data/rbi/lib/dodopayments/models/discount_list_params.rbi +8 -20
  160. data/rbi/lib/dodopayments/models/discount_retrieve_params.rbi +6 -8
  161. data/rbi/lib/dodopayments/models/discount_type.rbi +8 -8
  162. data/rbi/lib/dodopayments/models/discount_update_params.rbi +21 -59
  163. data/rbi/lib/dodopayments/models/dispute.rbi +27 -59
  164. data/rbi/lib/dodopayments/models/dispute_list_params.rbi +19 -57
  165. data/rbi/lib/dodopayments/models/dispute_retrieve_params.rbi +6 -8
  166. data/rbi/lib/dodopayments/models/dispute_stage.rbi +10 -10
  167. data/rbi/lib/dodopayments/models/dispute_status.rbi +14 -14
  168. data/rbi/lib/dodopayments/models/intent_status.rbi +22 -18
  169. data/rbi/lib/dodopayments/models/invoices/payment_retrieve_params.rbi +6 -8
  170. data/rbi/lib/dodopayments/models/license_activate_params.rbi +8 -20
  171. data/rbi/lib/dodopayments/models/license_deactivate_params.rbi +8 -20
  172. data/rbi/lib/dodopayments/models/license_key.rbi +19 -82
  173. data/rbi/lib/dodopayments/models/license_key_duration.rbi +8 -20
  174. data/rbi/lib/dodopayments/models/license_key_instance.rbi +8 -35
  175. data/rbi/lib/dodopayments/models/license_key_instance_list_params.rbi +9 -26
  176. data/rbi/lib/dodopayments/models/license_key_instance_retrieve_params.rbi +6 -8
  177. data/rbi/lib/dodopayments/models/license_key_instance_update_params.rbi +7 -17
  178. data/rbi/lib/dodopayments/models/license_key_list_params.rbi +21 -40
  179. data/rbi/lib/dodopayments/models/license_key_retrieve_params.rbi +6 -8
  180. data/rbi/lib/dodopayments/models/license_key_status.rbi +10 -10
  181. data/rbi/lib/dodopayments/models/license_key_update_params.rbi +12 -29
  182. data/rbi/lib/dodopayments/models/license_validate_params.rbi +8 -20
  183. data/rbi/lib/dodopayments/models/license_validate_response.rbi +4 -11
  184. data/rbi/lib/dodopayments/models/misc_list_supported_countries_params.rbi +6 -8
  185. data/rbi/lib/dodopayments/models/misc_list_supported_countries_response.rbi +5 -1
  186. data/rbi/lib/dodopayments/models/one_time_product_cart_item.rbi +8 -24
  187. data/rbi/lib/dodopayments/models/payment.rbi +197 -308
  188. data/rbi/lib/dodopayments/models/payment_create_params.rbi +256 -61
  189. data/rbi/lib/dodopayments/models/payment_create_response.rbi +16 -60
  190. data/rbi/lib/dodopayments/models/payment_list_params.rbi +16 -54
  191. data/rbi/lib/dodopayments/models/payment_list_response.rbi +178 -228
  192. data/rbi/lib/dodopayments/models/payment_retrieve_params.rbi +6 -8
  193. data/rbi/lib/dodopayments/models/payout_list_params.rbi +8 -20
  194. data/rbi/lib/dodopayments/models/payout_list_response.rbi +197 -271
  195. data/rbi/lib/dodopayments/models/price.rbi +368 -464
  196. data/rbi/lib/dodopayments/models/product.rbi +48 -119
  197. data/rbi/lib/dodopayments/models/product_create_params.rbi +46 -86
  198. data/rbi/lib/dodopayments/models/product_delete_params.rbi +6 -8
  199. data/rbi/lib/dodopayments/models/product_list_params.rbi +15 -34
  200. data/rbi/lib/dodopayments/models/product_list_response.rbi +209 -275
  201. data/rbi/lib/dodopayments/models/product_retrieve_params.rbi +6 -8
  202. data/rbi/lib/dodopayments/models/product_unarchive_params.rbi +6 -8
  203. data/rbi/lib/dodopayments/models/product_update_params.rbi +55 -102
  204. data/rbi/lib/dodopayments/models/products/image_update_params.rbi +7 -14
  205. data/rbi/lib/dodopayments/models/products/image_update_response.rbi +5 -17
  206. data/rbi/lib/dodopayments/models/refund.rbi +181 -213
  207. data/rbi/lib/dodopayments/models/refund_create_params.rbi +13 -39
  208. data/rbi/lib/dodopayments/models/refund_list_params.rbi +15 -48
  209. data/rbi/lib/dodopayments/models/refund_retrieve_params.rbi +6 -8
  210. data/rbi/lib/dodopayments/models/refund_status.rbi +11 -11
  211. data/rbi/lib/dodopayments/models/subscription.rbi +202 -283
  212. data/rbi/lib/dodopayments/models/subscription_charge_params.rbi +27 -0
  213. data/rbi/lib/dodopayments/models/subscription_charge_response.rbi +16 -0
  214. data/rbi/lib/dodopayments/models/subscription_create_params.rbi +310 -69
  215. data/rbi/lib/dodopayments/models/subscription_create_response.rbi +15 -51
  216. data/rbi/lib/dodopayments/models/subscription_list_params.rbi +15 -48
  217. data/rbi/lib/dodopayments/models/subscription_retrieve_params.rbi +6 -8
  218. data/rbi/lib/dodopayments/models/subscription_status.rbi +14 -14
  219. data/rbi/lib/dodopayments/models/subscription_update_params.rbi +25 -21
  220. data/rbi/lib/dodopayments/models/time_interval.rbi +11 -11
  221. data/rbi/lib/dodopayments/models/webhook_event.rbi +11 -54
  222. data/rbi/lib/dodopayments/models/webhook_event_list_params.rbi +12 -45
  223. data/rbi/lib/dodopayments/models/webhook_event_retrieve_params.rbi +6 -8
  224. data/rbi/lib/dodopayments/request_options.rbi +18 -81
  225. data/rbi/lib/dodopayments/resources/customers/customer_portal.rbi +5 -7
  226. data/rbi/lib/dodopayments/resources/customers.rbi +12 -20
  227. data/rbi/lib/dodopayments/resources/discounts.rbi +27 -37
  228. data/rbi/lib/dodopayments/resources/disputes.rbi +9 -13
  229. data/rbi/lib/dodopayments/resources/invoices/payments.rbi +4 -5
  230. data/rbi/lib/dodopayments/resources/invoices.rbi +3 -4
  231. data/rbi/lib/dodopayments/resources/license_key_instances.rbi +9 -15
  232. data/rbi/lib/dodopayments/resources/license_keys.rbi +13 -19
  233. data/rbi/lib/dodopayments/resources/licenses.rbi +8 -11
  234. data/rbi/lib/dodopayments/resources/misc.rbi +12 -6
  235. data/rbi/lib/dodopayments/resources/payments.rbi +32 -21
  236. data/rbi/lib/dodopayments/resources/payouts.rbi +5 -7
  237. data/rbi/lib/dodopayments/resources/products/images.rbi +4 -6
  238. data/rbi/lib/dodopayments/resources/products.rbi +43 -44
  239. data/rbi/lib/dodopayments/resources/refunds.rbi +10 -20
  240. data/rbi/lib/dodopayments/resources/subscriptions.rbi +57 -24
  241. data/rbi/lib/dodopayments/resources/webhook_events.rbi +7 -10
  242. data/rbi/lib/dodopayments/version.rbi +1 -1
  243. data/sig/dodopayments/client.rbs +8 -8
  244. data/sig/dodopayments/errors.rbs +98 -96
  245. data/sig/dodopayments/internal/default_page_number_pagination.rbs +11 -0
  246. data/sig/dodopayments/internal/transport/base_client.rbs +110 -0
  247. data/sig/dodopayments/internal/transport/pooled_net_requester.rbs +41 -0
  248. data/sig/dodopayments/internal/type/array_of.rbs +43 -0
  249. data/sig/dodopayments/internal/type/base_model.rbs +86 -0
  250. data/sig/dodopayments/internal/type/base_page.rbs +24 -0
  251. data/sig/dodopayments/internal/type/boolean.rbs +23 -0
  252. data/sig/dodopayments/internal/type/converter.rbs +54 -0
  253. data/sig/dodopayments/internal/type/enum.rbs +29 -0
  254. data/sig/dodopayments/internal/type/hash_of.rbs +43 -0
  255. data/sig/dodopayments/internal/type/io_like.rbs +23 -0
  256. data/sig/dodopayments/internal/type/request_parameters.rbs +15 -0
  257. data/sig/dodopayments/internal/type/union.rbs +47 -0
  258. data/sig/dodopayments/internal/type/unknown.rbs +23 -0
  259. data/sig/dodopayments/internal/util.rbs +156 -0
  260. data/sig/dodopayments/internal.rbs +5 -0
  261. data/sig/dodopayments/models/attach_existing_customer.rbs +2 -7
  262. data/sig/dodopayments/models/billing_address.rbs +8 -12
  263. data/sig/dodopayments/models/country_code.rbs +4 -2
  264. data/sig/dodopayments/models/create_new_customer.rbs +7 -12
  265. data/sig/dodopayments/models/customer.rbs +9 -13
  266. data/sig/dodopayments/models/customer_create_params.rbs +10 -15
  267. data/sig/dodopayments/models/customer_limited_details.rbs +2 -7
  268. data/sig/dodopayments/models/customer_list_params.rbs +9 -14
  269. data/sig/dodopayments/models/customer_portal_session.rbs +2 -7
  270. data/sig/dodopayments/models/customer_request.rbs +4 -2
  271. data/sig/dodopayments/models/customer_retrieve_params.rbs +6 -10
  272. data/sig/dodopayments/models/customer_update_params.rbs +9 -14
  273. data/sig/dodopayments/models/customers/customer_portal_create_params.rbs +8 -13
  274. data/sig/dodopayments/models/discount.rbs +14 -18
  275. data/sig/dodopayments/models/discount_create_params.rbs +14 -19
  276. data/sig/dodopayments/models/discount_delete_params.rbs +6 -10
  277. data/sig/dodopayments/models/discount_list_params.rbs +9 -14
  278. data/sig/dodopayments/models/discount_retrieve_params.rbs +6 -10
  279. data/sig/dodopayments/models/discount_type.rbs +4 -2
  280. data/sig/dodopayments/models/discount_update_params.rbs +14 -19
  281. data/sig/dodopayments/models/dispute.rbs +11 -15
  282. data/sig/dodopayments/models/dispute_list_params.rbs +14 -19
  283. data/sig/dodopayments/models/dispute_retrieve_params.rbs +6 -10
  284. data/sig/dodopayments/models/dispute_stage.rbs +4 -2
  285. data/sig/dodopayments/models/dispute_status.rbs +4 -2
  286. data/sig/dodopayments/models/intent_status.rbs +4 -2
  287. data/sig/dodopayments/models/invoices/payment_retrieve_params.rbs +6 -10
  288. data/sig/dodopayments/models/license_activate_params.rbs +10 -14
  289. data/sig/dodopayments/models/license_deactivate_params.rbs +9 -14
  290. data/sig/dodopayments/models/license_key.rbs +15 -19
  291. data/sig/dodopayments/models/license_key_duration.rbs +5 -7
  292. data/sig/dodopayments/models/license_key_instance.rbs +8 -13
  293. data/sig/dodopayments/models/license_key_instance_list_params.rbs +10 -15
  294. data/sig/dodopayments/models/license_key_instance_retrieve_params.rbs +5 -10
  295. data/sig/dodopayments/models/license_key_instance_update_params.rbs +8 -10
  296. data/sig/dodopayments/models/license_key_list_params.rbs +12 -17
  297. data/sig/dodopayments/models/license_key_retrieve_params.rbs +6 -10
  298. data/sig/dodopayments/models/license_key_status.rbs +4 -2
  299. data/sig/dodopayments/models/license_key_update_params.rbs +10 -15
  300. data/sig/dodopayments/models/license_validate_params.rbs +9 -14
  301. data/sig/dodopayments/models/license_validate_response.rbs +2 -7
  302. data/sig/dodopayments/models/misc_list_supported_countries_params.rbs +5 -10
  303. data/sig/dodopayments/models/one_time_product_cart_item.rbs +6 -7
  304. data/sig/dodopayments/models/payment.rbs +28 -35
  305. data/sig/dodopayments/models/payment_create_params.rbs +371 -20
  306. data/sig/dodopayments/models/payment_create_response.rbs +11 -16
  307. data/sig/dodopayments/models/payment_list_params.rbs +14 -19
  308. data/sig/dodopayments/models/payment_list_response.rbs +17 -20
  309. data/sig/dodopayments/models/payment_retrieve_params.rbs +6 -10
  310. data/sig/dodopayments/models/payout_list_params.rbs +9 -14
  311. data/sig/dodopayments/models/payout_list_response.rbs +30 -28
  312. data/sig/dodopayments/models/price.rbs +37 -41
  313. data/sig/dodopayments/models/product.rbs +22 -24
  314. data/sig/dodopayments/models/product_create_params.rbs +20 -23
  315. data/sig/dodopayments/models/product_delete_params.rbs +6 -10
  316. data/sig/dodopayments/models/product_list_params.rbs +11 -16
  317. data/sig/dodopayments/models/product_list_response.rbs +24 -25
  318. data/sig/dodopayments/models/product_retrieve_params.rbs +6 -10
  319. data/sig/dodopayments/models/product_unarchive_params.rbs +6 -10
  320. data/sig/dodopayments/models/product_update_params.rbs +21 -24
  321. data/sig/dodopayments/models/products/image_update_params.rbs +9 -13
  322. data/sig/dodopayments/models/products/image_update_response.rbs +2 -7
  323. data/sig/dodopayments/models/refund.rbs +15 -15
  324. data/sig/dodopayments/models/refund_create_params.rbs +10 -18
  325. data/sig/dodopayments/models/refund_list_params.rbs +13 -18
  326. data/sig/dodopayments/models/refund_retrieve_params.rbs +6 -10
  327. data/sig/dodopayments/models/refund_status.rbs +4 -2
  328. data/sig/dodopayments/models/subscription.rbs +29 -27
  329. data/sig/dodopayments/models/subscription_charge_params.rbs +21 -0
  330. data/sig/dodopayments/models/subscription_charge_response.rbs +13 -0
  331. data/sig/dodopayments/models/subscription_create_params.rbs +389 -22
  332. data/sig/dodopayments/models/subscription_create_response.rbs +10 -15
  333. data/sig/dodopayments/models/subscription_list_params.rbs +13 -18
  334. data/sig/dodopayments/models/subscription_retrieve_params.rbs +6 -10
  335. data/sig/dodopayments/models/subscription_status.rbs +4 -2
  336. data/sig/dodopayments/models/subscription_update_params.rbs +18 -15
  337. data/sig/dodopayments/models/time_interval.rbs +4 -2
  338. data/sig/dodopayments/models/webhook_event.rbs +11 -15
  339. data/sig/dodopayments/models/webhook_event_list_params.rbs +13 -18
  340. data/sig/dodopayments/models/webhook_event_retrieve_params.rbs +6 -10
  341. data/sig/dodopayments/request_options.rbs +3 -13
  342. data/sig/dodopayments/resources/customers/customer_portal.rbs +5 -11
  343. data/sig/dodopayments/resources/customers.rbs +21 -42
  344. data/sig/dodopayments/resources/discounts.rbs +34 -61
  345. data/sig/dodopayments/resources/disputes.rbs +14 -24
  346. data/sig/dodopayments/resources/invoices/payments.rbs +4 -10
  347. data/sig/dodopayments/resources/license_key_instances.rbs +15 -32
  348. data/sig/dodopayments/resources/license_keys.rbs +19 -36
  349. data/sig/dodopayments/resources/licenses.rbs +15 -30
  350. data/sig/dodopayments/resources/misc.rbs +3 -8
  351. data/sig/dodopayments/resources/payments.rbs +28 -39
  352. data/sig/dodopayments/resources/payouts.rbs +5 -9
  353. data/sig/dodopayments/resources/products/images.rbs +5 -11
  354. data/sig/dodopayments/resources/products.rbs +45 -71
  355. data/sig/dodopayments/resources/refunds.rbs +18 -33
  356. data/sig/dodopayments/resources/subscriptions.rbs +44 -54
  357. data/sig/dodopayments/resources/webhook_events.rbs +13 -24
  358. data/sig/dodopayments/version.rbs +1 -1
  359. metadata +62 -27
  360. data/lib/dodopayments/base_client.rb +0 -453
  361. data/lib/dodopayments/base_model.rb +0 -1217
  362. data/lib/dodopayments/base_page.rb +0 -62
  363. data/lib/dodopayments/default_page_number_pagination.rb +0 -97
  364. data/lib/dodopayments/extern.rb +0 -9
  365. data/lib/dodopayments/pooled_net_requester.rb +0 -164
  366. data/lib/dodopayments/util.rb +0 -717
  367. data/rbi/lib/dodopayments/base_client.rbi +0 -186
  368. data/rbi/lib/dodopayments/base_model.rbi +0 -606
  369. data/rbi/lib/dodopayments/base_page.rbi +0 -40
  370. data/rbi/lib/dodopayments/default_page_number_pagination.rbi +0 -17
  371. data/rbi/lib/dodopayments/extern.rbi +0 -8
  372. data/rbi/lib/dodopayments/pooled_net_requester.rbi +0 -47
  373. data/rbi/lib/dodopayments/util.rbi +0 -270
  374. data/sig/dodopayments/base_client.rbs +0 -103
  375. data/sig/dodopayments/base_model.rbs +0 -246
  376. data/sig/dodopayments/base_page.rbs +0 -20
  377. data/sig/dodopayments/default_page_number_pagination.rbs +0 -7
  378. data/sig/dodopayments/extern.rbs +0 -4
  379. data/sig/dodopayments/pooled_net_requester.rbs +0 -30
  380. data/sig/dodopayments/util.rbs +0 -136
@@ -0,0 +1,143 @@
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
+ # Array of items of a given type.
13
+ class ArrayOf
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) = other.is_a?(Array) && other.all?(item_type)
37
+
38
+ # @param other [Object]
39
+ #
40
+ # @return [Boolean]
41
+ def ==(other)
42
+ # rubocop:disable Layout/LineLength
43
+ other.is_a?(Dodopayments::Internal::Type::ArrayOf) && other.nilable? == nilable? && other.item_type == item_type
44
+ # rubocop:enable Layout/LineLength
45
+ end
46
+
47
+ # @api private
48
+ #
49
+ # @param value [Array<Object>, Object]
50
+ #
51
+ # @param state [Hash{Symbol=>Object}] .
52
+ #
53
+ # @option state [Boolean, :strong] :strictness
54
+ #
55
+ # @option state [Hash{Symbol=>Object}] :exactness
56
+ #
57
+ # @option state [Integer] :branched
58
+ #
59
+ # @return [Array<Object>, Object]
60
+ def coerce(value, state:)
61
+ exactness = state.fetch(:exactness)
62
+
63
+ unless value.is_a?(Array)
64
+ exactness[:no] += 1
65
+ return value
66
+ end
67
+
68
+ target = item_type
69
+ exactness[:yes] += 1
70
+ value
71
+ .map do |item|
72
+ case [nilable?, item]
73
+ in [true, nil]
74
+ exactness[:yes] += 1
75
+ nil
76
+ else
77
+ Dodopayments::Internal::Type::Converter.coerce(target, item, state: state)
78
+ end
79
+ end
80
+ end
81
+
82
+ # @api private
83
+ #
84
+ # @param value [Array<Object>, Object]
85
+ #
86
+ # @param state [Hash{Symbol=>Object}] .
87
+ #
88
+ # @option state [Boolean] :can_retry
89
+ #
90
+ # @return [Array<Object>, Object]
91
+ def dump(value, state:)
92
+ target = item_type
93
+ if value.is_a?(Array)
94
+ value.map do
95
+ Dodopayments::Internal::Type::Converter.dump(target, _1, state: state)
96
+ end
97
+ else
98
+ super
99
+ end
100
+ end
101
+
102
+ # @api private
103
+ #
104
+ # @return [generic<Elem>]
105
+ protected def item_type = @item_type_fn.call
106
+
107
+ # @api private
108
+ #
109
+ # @return [Boolean]
110
+ protected def nilable? = @nilable
111
+
112
+ # @api private
113
+ #
114
+ # @param type_info [Hash{Symbol=>Object}, Proc, Dodopayments::Internal::Type::Converter, Class]
115
+ #
116
+ # @param spec [Hash{Symbol=>Object}] .
117
+ #
118
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
119
+ #
120
+ # @option spec [Proc] :enum
121
+ #
122
+ # @option spec [Proc] :union
123
+ #
124
+ # @option spec [Boolean] :"nil?"
125
+ def initialize(type_info, spec = {})
126
+ @item_type_fn = Dodopayments::Internal::Type::Converter.type_info(type_info || spec)
127
+ @nilable = spec.fetch(:nil?, false)
128
+ end
129
+
130
+ # @api private
131
+ #
132
+ # @param depth [Integer]
133
+ #
134
+ # @return [String]
135
+ def inspect(depth: 0)
136
+ items = Dodopayments::Internal::Type::Converter.inspect(item_type, depth: depth.succ)
137
+
138
+ "#{self.class}[#{[items, nilable? ? 'nil' : nil].compact.join(' | ')}]"
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,407 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Internal
5
+ module Type
6
+ # @abstract
7
+ #
8
+ # @example
9
+ # # `attach_existing_customer` is a `Dodopayments::Models::AttachExistingCustomer`
10
+ # attach_existing_customer => {
11
+ # customer_id: customer_id
12
+ # }
13
+ class BaseModel
14
+ extend Dodopayments::Internal::Type::Converter
15
+
16
+ class << self
17
+ # @api private
18
+ #
19
+ # Assumes superclass fields are totally defined before fields are accessed /
20
+ # defined on subclasses.
21
+ #
22
+ # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
23
+ def known_fields
24
+ @known_fields ||= (self < Dodopayments::Internal::Type::BaseModel ? superclass.known_fields.dup : {})
25
+ end
26
+
27
+ # @api private
28
+ #
29
+ # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
30
+ def fields
31
+ known_fields.transform_values do |field|
32
+ {**field.except(:type_fn), type: field.fetch(:type_fn).call}
33
+ end
34
+ end
35
+
36
+ # @api private
37
+ #
38
+ # @param name_sym [Symbol]
39
+ #
40
+ # @param required [Boolean]
41
+ #
42
+ # @param type_info [Hash{Symbol=>Object}, Proc, Dodopayments::Internal::Type::Converter, Class]
43
+ #
44
+ # @param spec [Hash{Symbol=>Object}] .
45
+ #
46
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
47
+ #
48
+ # @option spec [Proc] :enum
49
+ #
50
+ # @option spec [Proc] :union
51
+ #
52
+ # @option spec [Boolean] :"nil?"
53
+ private def add_field(name_sym, required:, type_info:, spec:)
54
+ type_fn, info =
55
+ case type_info
56
+ in Proc | Dodopayments::Internal::Type::Converter | Class
57
+ [Dodopayments::Internal::Type::Converter.type_info({**spec, union: type_info}), spec]
58
+ in Hash
59
+ [Dodopayments::Internal::Type::Converter.type_info(type_info), type_info]
60
+ end
61
+
62
+ setter = "#{name_sym}="
63
+ api_name = info.fetch(:api_name, name_sym)
64
+ nilable = info.fetch(:nil?, false)
65
+ const = if required && !nilable
66
+ info.fetch(
67
+ :const,
68
+ Dodopayments::Internal::OMIT
69
+ )
70
+ else
71
+ Dodopayments::Internal::OMIT
72
+ end
73
+
74
+ [name_sym, setter].each { undef_method(_1) } if known_fields.key?(name_sym)
75
+
76
+ known_fields[name_sym] =
77
+ {
78
+ mode: @mode,
79
+ api_name: api_name,
80
+ required: required,
81
+ nilable: nilable,
82
+ const: const,
83
+ type_fn: type_fn
84
+ }
85
+
86
+ define_method(setter) { @data.store(name_sym, _1) }
87
+
88
+ define_method(name_sym) do
89
+ target = type_fn.call
90
+ value = @data.fetch(name_sym) { const == Dodopayments::Internal::OMIT ? nil : const }
91
+ state = {strictness: :strong, exactness: {yes: 0, no: 0, maybe: 0}, branched: 0}
92
+ if (nilable || !required) && value.nil?
93
+ nil
94
+ else
95
+ Dodopayments::Internal::Type::Converter.coerce(
96
+ target, value, state: state
97
+ )
98
+ end
99
+ rescue StandardError
100
+ cls = self.class.name.split("::").last
101
+ # rubocop:disable Layout/LineLength
102
+ message = "Failed to parse #{cls}.#{__method__} from #{value.class} to #{target.inspect}. To get the unparsed API response, use #{cls}[:#{__method__}]."
103
+ # rubocop:enable Layout/LineLength
104
+ raise Dodopayments::Errors::ConversionError.new(message)
105
+ end
106
+ end
107
+
108
+ # @api private
109
+ #
110
+ # @param name_sym [Symbol]
111
+ #
112
+ # @param type_info [Hash{Symbol=>Object}, Proc, Dodopayments::Internal::Type::Converter, Class]
113
+ #
114
+ # @param spec [Hash{Symbol=>Object}] .
115
+ #
116
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
117
+ #
118
+ # @option spec [Proc] :enum
119
+ #
120
+ # @option spec [Proc] :union
121
+ #
122
+ # @option spec [Boolean] :"nil?"
123
+ def required(name_sym, type_info, spec = {})
124
+ add_field(name_sym, required: true, type_info: type_info, spec: spec)
125
+ end
126
+
127
+ # @api private
128
+ #
129
+ # @param name_sym [Symbol]
130
+ #
131
+ # @param type_info [Hash{Symbol=>Object}, Proc, Dodopayments::Internal::Type::Converter, Class]
132
+ #
133
+ # @param spec [Hash{Symbol=>Object}] .
134
+ #
135
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
136
+ #
137
+ # @option spec [Proc] :enum
138
+ #
139
+ # @option spec [Proc] :union
140
+ #
141
+ # @option spec [Boolean] :"nil?"
142
+ def optional(name_sym, type_info, spec = {})
143
+ add_field(name_sym, required: false, type_info: type_info, spec: spec)
144
+ end
145
+
146
+ # @api private
147
+ #
148
+ # `request_only` attributes not excluded from `.#coerce` when receiving responses
149
+ # even if well behaved servers should not send them
150
+ #
151
+ # @param blk [Proc]
152
+ private def request_only(&blk)
153
+ @mode = :dump
154
+ blk.call
155
+ ensure
156
+ @mode = nil
157
+ end
158
+
159
+ # @api private
160
+ #
161
+ # `response_only` attributes are omitted from `.#dump` when making requests
162
+ #
163
+ # @param blk [Proc]
164
+ private def response_only(&blk)
165
+ @mode = :coerce
166
+ blk.call
167
+ ensure
168
+ @mode = nil
169
+ end
170
+
171
+ # @param other [Object]
172
+ #
173
+ # @return [Boolean]
174
+ def ==(other)
175
+ other.is_a?(Class) && other <= Dodopayments::Internal::Type::BaseModel && other.fields == fields
176
+ end
177
+ end
178
+
179
+ # @param other [Object]
180
+ #
181
+ # @return [Boolean]
182
+ def ==(other) = self.class == other.class && @data == other.to_h
183
+
184
+ class << self
185
+ # @api private
186
+ #
187
+ # @param value [Dodopayments::Internal::Type::BaseModel, Hash{Object=>Object}, Object]
188
+ #
189
+ # @param state [Hash{Symbol=>Object}] .
190
+ #
191
+ # @option state [Boolean, :strong] :strictness
192
+ #
193
+ # @option state [Hash{Symbol=>Object}] :exactness
194
+ #
195
+ # @option state [Integer] :branched
196
+ #
197
+ # @return [Dodopayments::Internal::Type::BaseModel, Object]
198
+ def coerce(value, state:)
199
+ exactness = state.fetch(:exactness)
200
+
201
+ if value.is_a?(self.class)
202
+ exactness[:yes] += 1
203
+ return value
204
+ end
205
+
206
+ unless (val = Dodopayments::Internal::Util.coerce_hash(value)).is_a?(Hash)
207
+ exactness[:no] += 1
208
+ return value
209
+ end
210
+ exactness[:yes] += 1
211
+
212
+ keys = val.keys.to_set
213
+ instance = new
214
+ data = instance.to_h
215
+
216
+ # rubocop:disable Metrics/BlockLength
217
+ fields.each do |name, field|
218
+ mode, required, target = field.fetch_values(:mode, :required, :type)
219
+ api_name, nilable, const = field.fetch_values(:api_name, :nilable, :const)
220
+
221
+ unless val.key?(api_name)
222
+ if required && mode != :dump && const == Dodopayments::Internal::OMIT
223
+ exactness[nilable ? :maybe : :no] += 1
224
+ else
225
+ exactness[:yes] += 1
226
+ end
227
+ next
228
+ end
229
+
230
+ item = val.fetch(api_name)
231
+ keys.delete(api_name)
232
+
233
+ converted =
234
+ if item.nil? && (nilable || !required)
235
+ exactness[nilable ? :yes : :maybe] += 1
236
+ nil
237
+ else
238
+ coerced = Dodopayments::Internal::Type::Converter.coerce(target, item, state: state)
239
+ case target
240
+ in Dodopayments::Internal::Type::Converter | Symbol
241
+ coerced
242
+ else
243
+ item
244
+ end
245
+ end
246
+ data.store(name, converted)
247
+ end
248
+ # rubocop:enable Metrics/BlockLength
249
+
250
+ keys.each { data.store(_1, val.fetch(_1)) }
251
+ instance
252
+ end
253
+
254
+ # @api private
255
+ #
256
+ # @param value [Dodopayments::Internal::Type::BaseModel, Object]
257
+ #
258
+ # @param state [Hash{Symbol=>Object}] .
259
+ #
260
+ # @option state [Boolean] :can_retry
261
+ #
262
+ # @return [Hash{Object=>Object}, Object]
263
+ def dump(value, state:)
264
+ unless (coerced = Dodopayments::Internal::Util.coerce_hash(value)).is_a?(Hash)
265
+ return super
266
+ end
267
+
268
+ acc = {}
269
+
270
+ coerced.each do |key, val|
271
+ name = key.is_a?(String) ? key.to_sym : key
272
+ case (field = known_fields[name])
273
+ in nil
274
+ acc.store(name, super(val, state: state))
275
+ else
276
+ api_name, mode, type_fn = field.fetch_values(:api_name, :mode, :type_fn)
277
+ case mode
278
+ in :coerce
279
+ next
280
+ else
281
+ target = type_fn.call
282
+ acc.store(api_name, Dodopayments::Internal::Type::Converter.dump(target, val, state: state))
283
+ end
284
+ end
285
+ end
286
+
287
+ known_fields.each_value do |field|
288
+ api_name, mode, const = field.fetch_values(:api_name, :mode, :const)
289
+ next if mode == :coerce || acc.key?(api_name) || const == Dodopayments::Internal::OMIT
290
+ acc.store(api_name, const)
291
+ end
292
+
293
+ acc
294
+ end
295
+ end
296
+
297
+ # Returns the raw value associated with the given key, if found. Otherwise, nil is
298
+ # returned.
299
+ #
300
+ # It is valid to lookup keys that are not in the API spec, for example to access
301
+ # undocumented features. This method does not parse response data into
302
+ # higher-level types. Lookup by anything other than a Symbol is an ArgumentError.
303
+ #
304
+ # @param key [Symbol]
305
+ #
306
+ # @return [Object, nil]
307
+ def [](key)
308
+ unless key.instance_of?(Symbol)
309
+ raise ArgumentError.new("Expected symbol key for lookup, got #{key.inspect}")
310
+ end
311
+
312
+ @data[key]
313
+ end
314
+
315
+ # Returns a Hash of the data underlying this object. O(1)
316
+ #
317
+ # Keys are Symbols and values are the raw values from the response. The return
318
+ # value indicates which values were ever set on the object. i.e. there will be a
319
+ # key in this hash if they ever were, even if the set value was nil.
320
+ #
321
+ # This method is not recursive. The returned value is shared by the object, so it
322
+ # should not be mutated.
323
+ #
324
+ # @return [Hash{Symbol=>Object}]
325
+ def to_h = @data
326
+
327
+ alias_method :to_hash, :to_h
328
+
329
+ # @param keys [Array<Symbol>, nil]
330
+ #
331
+ # @return [Hash{Symbol=>Object}]
332
+ def deconstruct_keys(keys)
333
+ (keys || self.class.known_fields.keys)
334
+ .filter_map do |k|
335
+ unless self.class.known_fields.key?(k)
336
+ next
337
+ end
338
+
339
+ [k, public_send(k)]
340
+ end
341
+ .to_h
342
+ end
343
+
344
+ # @param a [Object]
345
+ #
346
+ # @return [String]
347
+ def to_json(*a) = Dodopayments::Internal::Type::Converter.dump(self.class, self).to_json(*a)
348
+
349
+ # @param a [Object]
350
+ #
351
+ # @return [String]
352
+ def to_yaml(*a) = Dodopayments::Internal::Type::Converter.dump(self.class, self).to_yaml(*a)
353
+
354
+ # Create a new instance of a model.
355
+ #
356
+ # @param data [Hash{Symbol=>Object}, Dodopayments::Internal::Type::BaseModel]
357
+ def initialize(data = {})
358
+ case Dodopayments::Internal::Util.coerce_hash(data)
359
+ in Hash => coerced
360
+ @data = coerced
361
+ else
362
+ message = "Expected a #{Hash} or #{Dodopayments::Internal::Type::BaseModel}, got #{data.inspect}"
363
+ raise ArgumentError.new(message)
364
+ end
365
+ end
366
+
367
+ class << self
368
+ # @api private
369
+ #
370
+ # @param depth [Integer]
371
+ #
372
+ # @return [String]
373
+ def inspect(depth: 0)
374
+ return super() if depth.positive?
375
+
376
+ depth = depth.succ
377
+ deferred = fields.transform_values do |field|
378
+ type, required, nilable = field.fetch_values(:type, :required, :nilable)
379
+ -> do
380
+ [
381
+ Dodopayments::Internal::Type::Converter.inspect(type, depth: depth),
382
+ !required || nilable ? "nil" : nil
383
+ ].compact.join(" | ")
384
+ end
385
+ .tap { _1.define_singleton_method(:inspect) { call } }
386
+ end
387
+
388
+ "#{name}[#{deferred.inspect}]"
389
+ end
390
+ end
391
+
392
+ # @api private
393
+ #
394
+ # @return [String]
395
+ def inspect
396
+ rows = @data.map do
397
+ "#{_1}=#{self.class.known_fields.key?(_1) ? public_send(_1).inspect : ''}"
398
+ rescue Dodopayments::Errors::ConversionError
399
+ "#{_1}=#{_2.inspect}"
400
+ end
401
+
402
+ "#<#{self.class}:0x#{object_id.to_s(16)} #{rows.join(' ')}>"
403
+ end
404
+ end
405
+ end
406
+ end
407
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Internal
5
+ module Type
6
+ # @generic Elem
7
+ #
8
+ # This module provides a base implementation for paginated responses in the SDK.
9
+ module BasePage
10
+ # rubocop:disable Lint/UnusedMethodArgument
11
+
12
+ # @return [Boolean]
13
+ def next_page? = (raise NotImplementedError)
14
+
15
+ # @raise [Dodopayments::Errors::APIError]
16
+ # @return [Dodopayments::Internal::Type::BasePage]
17
+ def next_page = (raise NotImplementedError)
18
+
19
+ # @param blk [Proc]
20
+ #
21
+ # @yieldparam [generic<Elem>]
22
+ # @return [void]
23
+ def auto_paging_each(&blk) = (raise NotImplementedError)
24
+
25
+ # @return [Enumerable<generic<Elem>>]
26
+ def to_enum = super(:auto_paging_each)
27
+
28
+ alias_method :enum_for, :to_enum
29
+
30
+ # @api private
31
+ #
32
+ # @param client [Dodopayments::Internal::Transport::BaseClient]
33
+ # @param req [Hash{Symbol=>Object}]
34
+ # @param headers [Hash{String=>String}, Net::HTTPHeader]
35
+ # @param page_data [Object]
36
+ def initialize(client:, req:, headers:, page_data:)
37
+ @client = client
38
+ @req = req
39
+ @model = req.fetch(:model)
40
+ super()
41
+ end
42
+
43
+ # rubocop:enable Lint/UnusedMethodArgument
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # @abstract
9
+ #
10
+ # Ruby has no Boolean class; this is something for models to refer to.
11
+ class Boolean
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) = other == true || other == false
20
+
21
+ # @param other [Object]
22
+ #
23
+ # @return [Boolean]
24
+ def self.==(other) = other.is_a?(Class) && other <= Dodopayments::Internal::Type::Boolean
25
+
26
+ class << self
27
+ # @api private
28
+ #
29
+ # @param value [Boolean, Object]
30
+ #
31
+ # @param state [Hash{Symbol=>Object}] .
32
+ #
33
+ # @option state [Boolean, :strong] :strictness
34
+ #
35
+ # @option state [Hash{Symbol=>Object}] :exactness
36
+ #
37
+ # @option state [Integer] :branched
38
+ #
39
+ # @return [Boolean, Object]
40
+ def coerce(value, state:)
41
+ state.fetch(:exactness)[value == true || value == false ? :yes : :no] += 1
42
+ value
43
+ end
44
+
45
+ # @!parse
46
+ # # @api private
47
+ # #
48
+ # # @param value [Boolean, Object]
49
+ # #
50
+ # # @param state [Hash{Symbol=>Object}] .
51
+ # #
52
+ # # @option state [Boolean] :can_retry
53
+ # #
54
+ # # @return [Boolean, Object]
55
+ # def dump(value, state:) = super
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end