terminal-shop 1.8.0 → 2.1.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 (299) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -8
  3. data/lib/terminal-shop/client.rb +2 -1
  4. data/lib/terminal-shop/models/address_create_params.rb +1 -1
  5. data/lib/terminal-shop/models/address_delete_params.rb +1 -1
  6. data/lib/terminal-shop/models/address_get_params.rb +1 -1
  7. data/lib/terminal-shop/models/address_list_params.rb +1 -1
  8. data/lib/terminal-shop/models/app_create_params.rb +1 -1
  9. data/lib/terminal-shop/models/app_delete_params.rb +1 -1
  10. data/lib/terminal-shop/models/app_get_params.rb +1 -1
  11. data/lib/terminal-shop/models/app_list_params.rb +1 -1
  12. data/lib/terminal-shop/models/card_collect_params.rb +1 -1
  13. data/lib/terminal-shop/models/card_create_params.rb +1 -1
  14. data/lib/terminal-shop/models/card_delete_params.rb +1 -1
  15. data/lib/terminal-shop/models/card_get_params.rb +1 -1
  16. data/lib/terminal-shop/models/card_list_params.rb +1 -1
  17. data/lib/terminal-shop/models/cart_clear_params.rb +1 -1
  18. data/lib/terminal-shop/models/cart_convert_params.rb +1 -1
  19. data/lib/terminal-shop/models/cart_get_params.rb +1 -1
  20. data/lib/terminal-shop/models/cart_set_address_params.rb +1 -1
  21. data/lib/terminal-shop/models/cart_set_card_params.rb +1 -1
  22. data/lib/terminal-shop/models/cart_set_item_params.rb +1 -1
  23. data/lib/terminal-shop/models/email_create_params.rb +1 -1
  24. data/lib/terminal-shop/models/order_create_params.rb +1 -1
  25. data/lib/terminal-shop/models/order_get_params.rb +1 -1
  26. data/lib/terminal-shop/models/order_list_params.rb +1 -1
  27. data/lib/terminal-shop/models/product.rb +7 -3
  28. data/lib/terminal-shop/models/product_get_params.rb +1 -1
  29. data/lib/terminal-shop/models/product_list_params.rb +1 -1
  30. data/lib/terminal-shop/models/profile_me_params.rb +1 -1
  31. data/lib/terminal-shop/models/profile_update_params.rb +1 -1
  32. data/lib/terminal-shop/models/region.rb +7 -3
  33. data/lib/terminal-shop/models/subscription.rb +5 -7
  34. data/lib/terminal-shop/models/subscription_create_params.rb +1 -1
  35. data/lib/terminal-shop/models/subscription_delete_params.rb +1 -1
  36. data/lib/terminal-shop/models/subscription_get_params.rb +1 -1
  37. data/lib/terminal-shop/models/subscription_list_params.rb +1 -1
  38. data/lib/terminal-shop/models/token_create_params.rb +1 -1
  39. data/lib/terminal-shop/models/token_delete_params.rb +1 -1
  40. data/lib/terminal-shop/models/token_get_params.rb +1 -1
  41. data/lib/terminal-shop/models/token_list_params.rb +1 -1
  42. data/lib/terminal-shop/models/view_init_params.rb +1 -1
  43. data/lib/terminal-shop/request_options.rb +1 -34
  44. data/lib/terminal-shop/transport/base_client.rb +459 -0
  45. data/lib/terminal-shop/transport/pooled_net_requester.rb +182 -0
  46. data/lib/terminal-shop/type/array_of.rb +110 -0
  47. data/lib/terminal-shop/type/base_model.rb +362 -0
  48. data/lib/terminal-shop/type/base_page.rb +61 -0
  49. data/lib/terminal-shop/type/boolean_model.rb +52 -0
  50. data/lib/terminal-shop/type/converter.rb +217 -0
  51. data/lib/terminal-shop/type/enum.rb +101 -0
  52. data/lib/terminal-shop/type/hash_of.rb +136 -0
  53. data/lib/terminal-shop/type/request_parameters.rb +38 -0
  54. data/lib/terminal-shop/type/union.rb +183 -0
  55. data/lib/terminal-shop/type/unknown.rb +56 -0
  56. data/lib/terminal-shop/type.rb +23 -0
  57. data/lib/terminal-shop/util.rb +19 -12
  58. data/lib/terminal-shop/version.rb +1 -1
  59. data/lib/terminal-shop.rb +28 -5
  60. data/rbi/lib/terminal-shop/client.rbi +19 -31
  61. data/rbi/lib/terminal-shop/errors.rbi +7 -42
  62. data/rbi/lib/terminal-shop/models/address.rbi +15 -51
  63. data/rbi/lib/terminal-shop/models/address_create_params.rbi +27 -48
  64. data/rbi/lib/terminal-shop/models/address_create_response.rbi +1 -6
  65. data/rbi/lib/terminal-shop/models/address_delete_params.rbi +2 -2
  66. data/rbi/lib/terminal-shop/models/address_delete_response.rbi +1 -6
  67. data/rbi/lib/terminal-shop/models/address_get_params.rbi +2 -2
  68. data/rbi/lib/terminal-shop/models/address_get_response.rbi +7 -6
  69. data/rbi/lib/terminal-shop/models/address_list_params.rbi +2 -2
  70. data/rbi/lib/terminal-shop/models/address_list_response.rbi +4 -6
  71. data/rbi/lib/terminal-shop/models/app.rbi +4 -24
  72. data/rbi/lib/terminal-shop/models/app_create_params.rbi +4 -14
  73. data/rbi/lib/terminal-shop/models/app_create_response.rbi +8 -20
  74. data/rbi/lib/terminal-shop/models/app_delete_params.rbi +2 -2
  75. data/rbi/lib/terminal-shop/models/app_delete_response.rbi +1 -6
  76. data/rbi/lib/terminal-shop/models/app_get_params.rbi +2 -2
  77. data/rbi/lib/terminal-shop/models/app_get_response.rbi +4 -6
  78. data/rbi/lib/terminal-shop/models/app_list_params.rbi +2 -2
  79. data/rbi/lib/terminal-shop/models/app_list_response.rbi +4 -6
  80. data/rbi/lib/terminal-shop/models/card.rbi +14 -36
  81. data/rbi/lib/terminal-shop/models/card_collect_params.rbi +2 -2
  82. data/rbi/lib/terminal-shop/models/card_collect_response.rbi +7 -14
  83. data/rbi/lib/terminal-shop/models/card_create_params.rbi +3 -8
  84. data/rbi/lib/terminal-shop/models/card_create_response.rbi +1 -6
  85. data/rbi/lib/terminal-shop/models/card_delete_params.rbi +2 -2
  86. data/rbi/lib/terminal-shop/models/card_delete_response.rbi +1 -6
  87. data/rbi/lib/terminal-shop/models/card_get_params.rbi +2 -2
  88. data/rbi/lib/terminal-shop/models/card_get_response.rbi +4 -6
  89. data/rbi/lib/terminal-shop/models/card_list_params.rbi +2 -2
  90. data/rbi/lib/terminal-shop/models/card_list_response.rbi +4 -6
  91. data/rbi/lib/terminal-shop/models/cart.rbi +34 -88
  92. data/rbi/lib/terminal-shop/models/cart_clear_params.rbi +2 -2
  93. data/rbi/lib/terminal-shop/models/cart_clear_response.rbi +1 -6
  94. data/rbi/lib/terminal-shop/models/cart_convert_params.rbi +2 -2
  95. data/rbi/lib/terminal-shop/models/cart_convert_response.rbi +4 -6
  96. data/rbi/lib/terminal-shop/models/cart_get_params.rbi +2 -2
  97. data/rbi/lib/terminal-shop/models/cart_get_response.rbi +4 -6
  98. data/rbi/lib/terminal-shop/models/cart_set_address_params.rbi +3 -8
  99. data/rbi/lib/terminal-shop/models/cart_set_address_response.rbi +1 -6
  100. data/rbi/lib/terminal-shop/models/cart_set_card_params.rbi +3 -8
  101. data/rbi/lib/terminal-shop/models/cart_set_card_response.rbi +1 -6
  102. data/rbi/lib/terminal-shop/models/cart_set_item_params.rbi +4 -14
  103. data/rbi/lib/terminal-shop/models/cart_set_item_response.rbi +4 -6
  104. data/rbi/lib/terminal-shop/models/email_create_params.rbi +3 -8
  105. data/rbi/lib/terminal-shop/models/email_create_response.rbi +1 -6
  106. data/rbi/lib/terminal-shop/models/order.rbi +52 -139
  107. data/rbi/lib/terminal-shop/models/order_create_params.rbi +5 -20
  108. data/rbi/lib/terminal-shop/models/order_create_response.rbi +1 -6
  109. data/rbi/lib/terminal-shop/models/order_get_params.rbi +2 -2
  110. data/rbi/lib/terminal-shop/models/order_get_response.rbi +4 -6
  111. data/rbi/lib/terminal-shop/models/order_list_params.rbi +2 -2
  112. data/rbi/lib/terminal-shop/models/order_list_response.rbi +4 -6
  113. data/rbi/lib/terminal-shop/models/product.rbi +43 -77
  114. data/rbi/lib/terminal-shop/models/product_get_params.rbi +2 -2
  115. data/rbi/lib/terminal-shop/models/product_get_response.rbi +7 -6
  116. data/rbi/lib/terminal-shop/models/product_list_params.rbi +2 -2
  117. data/rbi/lib/terminal-shop/models/product_list_response.rbi +4 -6
  118. data/rbi/lib/terminal-shop/models/product_variant.rbi +3 -18
  119. data/rbi/lib/terminal-shop/models/profile.rbi +12 -36
  120. data/rbi/lib/terminal-shop/models/profile_me_params.rbi +2 -2
  121. data/rbi/lib/terminal-shop/models/profile_me_response.rbi +7 -6
  122. data/rbi/lib/terminal-shop/models/profile_update_params.rbi +4 -14
  123. data/rbi/lib/terminal-shop/models/profile_update_response.rbi +7 -6
  124. data/rbi/lib/terminal-shop/models/region.rbi +10 -5
  125. data/rbi/lib/terminal-shop/models/subscription.rbi +28 -75
  126. data/rbi/lib/terminal-shop/models/subscription_create_params.rbi +2 -2
  127. data/rbi/lib/terminal-shop/models/subscription_create_response.rbi +1 -6
  128. data/rbi/lib/terminal-shop/models/subscription_delete_params.rbi +2 -2
  129. data/rbi/lib/terminal-shop/models/subscription_delete_response.rbi +1 -6
  130. data/rbi/lib/terminal-shop/models/subscription_get_params.rbi +2 -2
  131. data/rbi/lib/terminal-shop/models/subscription_get_response.rbi +7 -6
  132. data/rbi/lib/terminal-shop/models/subscription_list_params.rbi +2 -2
  133. data/rbi/lib/terminal-shop/models/subscription_list_response.rbi +3 -8
  134. data/rbi/lib/terminal-shop/models/token.rbi +3 -18
  135. data/rbi/lib/terminal-shop/models/token_create_params.rbi +2 -2
  136. data/rbi/lib/terminal-shop/models/token_create_response.rbi +8 -20
  137. data/rbi/lib/terminal-shop/models/token_delete_params.rbi +2 -2
  138. data/rbi/lib/terminal-shop/models/token_delete_response.rbi +1 -6
  139. data/rbi/lib/terminal-shop/models/token_get_params.rbi +2 -2
  140. data/rbi/lib/terminal-shop/models/token_get_response.rbi +4 -6
  141. data/rbi/lib/terminal-shop/models/token_list_params.rbi +2 -2
  142. data/rbi/lib/terminal-shop/models/token_list_response.rbi +4 -6
  143. data/rbi/lib/terminal-shop/models/view_init_params.rbi +2 -2
  144. data/rbi/lib/terminal-shop/models/view_init_response.rbi +44 -82
  145. data/rbi/lib/terminal-shop/request_options.rbi +8 -67
  146. data/rbi/lib/terminal-shop/resources/address.rbi +4 -4
  147. data/rbi/lib/terminal-shop/resources/app.rbi +4 -4
  148. data/rbi/lib/terminal-shop/resources/card.rbi +5 -5
  149. data/rbi/lib/terminal-shop/resources/cart.rbi +6 -6
  150. data/rbi/lib/terminal-shop/resources/email.rbi +1 -1
  151. data/rbi/lib/terminal-shop/resources/order.rbi +3 -3
  152. data/rbi/lib/terminal-shop/resources/product.rbi +2 -2
  153. data/rbi/lib/terminal-shop/resources/profile.rbi +2 -2
  154. data/rbi/lib/terminal-shop/resources/subscription.rbi +5 -4
  155. data/rbi/lib/terminal-shop/resources/token.rbi +4 -4
  156. data/rbi/lib/terminal-shop/resources/view.rbi +1 -1
  157. data/rbi/lib/terminal-shop/transport/base_client.rbi +208 -0
  158. data/rbi/lib/terminal-shop/transport/pooled_net_requester.rbi +64 -0
  159. data/rbi/lib/terminal-shop/type/array_of.rbi +82 -0
  160. data/rbi/lib/terminal-shop/type/base_model.rbi +194 -0
  161. data/rbi/lib/terminal-shop/type/base_page.rbi +38 -0
  162. data/rbi/lib/terminal-shop/type/boolean_model.rbi +41 -0
  163. data/rbi/lib/terminal-shop/type/converter.rbi +101 -0
  164. data/rbi/lib/terminal-shop/type/enum.rbi +58 -0
  165. data/rbi/lib/terminal-shop/type/hash_of.rbi +85 -0
  166. data/rbi/lib/terminal-shop/type/request_parameters.rbi +20 -0
  167. data/rbi/lib/terminal-shop/type/union.rbi +68 -0
  168. data/rbi/lib/terminal-shop/type/unknown.rbi +37 -0
  169. data/rbi/lib/terminal-shop/type.rbi +23 -0
  170. data/rbi/lib/terminal-shop/util.rbi +24 -13
  171. data/rbi/lib/terminal-shop/version.rbi +1 -1
  172. data/sig/terminal-shop/client.rbs +9 -9
  173. data/sig/terminal-shop/errors.rbs +17 -17
  174. data/sig/terminal-shop/models/address.rbs +11 -15
  175. data/sig/terminal-shop/models/address_create_params.rbs +12 -17
  176. data/sig/terminal-shop/models/address_create_response.rbs +1 -6
  177. data/sig/terminal-shop/models/address_delete_params.rbs +2 -7
  178. data/sig/terminal-shop/models/address_delete_response.rbs +1 -6
  179. data/sig/terminal-shop/models/address_get_params.rbs +2 -7
  180. data/sig/terminal-shop/models/address_get_response.rbs +1 -6
  181. data/sig/terminal-shop/models/address_list_params.rbs +2 -7
  182. data/sig/terminal-shop/models/address_list_response.rbs +1 -6
  183. data/sig/terminal-shop/models/app.rbs +6 -5
  184. data/sig/terminal-shop/models/app_create_params.rbs +6 -11
  185. data/sig/terminal-shop/models/app_create_response.rbs +4 -12
  186. data/sig/terminal-shop/models/app_delete_params.rbs +2 -7
  187. data/sig/terminal-shop/models/app_delete_response.rbs +1 -6
  188. data/sig/terminal-shop/models/app_get_params.rbs +2 -6
  189. data/sig/terminal-shop/models/app_get_response.rbs +1 -5
  190. data/sig/terminal-shop/models/app_list_params.rbs +2 -6
  191. data/sig/terminal-shop/models/app_list_response.rbs +1 -6
  192. data/sig/terminal-shop/models/card.rbs +7 -16
  193. data/sig/terminal-shop/models/card_collect_params.rbs +2 -7
  194. data/sig/terminal-shop/models/card_collect_response.rbs +4 -12
  195. data/sig/terminal-shop/models/card_create_params.rbs +5 -7
  196. data/sig/terminal-shop/models/card_create_response.rbs +1 -6
  197. data/sig/terminal-shop/models/card_delete_params.rbs +2 -7
  198. data/sig/terminal-shop/models/card_delete_response.rbs +1 -6
  199. data/sig/terminal-shop/models/card_get_params.rbs +2 -6
  200. data/sig/terminal-shop/models/card_get_response.rbs +1 -6
  201. data/sig/terminal-shop/models/card_list_params.rbs +2 -6
  202. data/sig/terminal-shop/models/card_list_response.rbs +1 -6
  203. data/sig/terminal-shop/models/cart.rbs +20 -34
  204. data/sig/terminal-shop/models/cart_clear_params.rbs +2 -7
  205. data/sig/terminal-shop/models/cart_clear_response.rbs +1 -6
  206. data/sig/terminal-shop/models/cart_convert_params.rbs +2 -7
  207. data/sig/terminal-shop/models/cart_convert_response.rbs +1 -6
  208. data/sig/terminal-shop/models/cart_get_params.rbs +2 -6
  209. data/sig/terminal-shop/models/cart_get_response.rbs +1 -6
  210. data/sig/terminal-shop/models/cart_set_address_params.rbs +5 -10
  211. data/sig/terminal-shop/models/cart_set_address_response.rbs +1 -6
  212. data/sig/terminal-shop/models/cart_set_card_params.rbs +5 -7
  213. data/sig/terminal-shop/models/cart_set_card_response.rbs +1 -6
  214. data/sig/terminal-shop/models/cart_set_item_params.rbs +6 -11
  215. data/sig/terminal-shop/models/cart_set_item_response.rbs +1 -6
  216. data/sig/terminal-shop/models/email_create_params.rbs +5 -7
  217. data/sig/terminal-shop/models/email_create_response.rbs +1 -6
  218. data/sig/terminal-shop/models/order.rbs +31 -50
  219. data/sig/terminal-shop/models/order_create_params.rbs +7 -12
  220. data/sig/terminal-shop/models/order_create_response.rbs +1 -6
  221. data/sig/terminal-shop/models/order_get_params.rbs +2 -6
  222. data/sig/terminal-shop/models/order_get_response.rbs +1 -6
  223. data/sig/terminal-shop/models/order_list_params.rbs +2 -7
  224. data/sig/terminal-shop/models/order_list_response.rbs +1 -6
  225. data/sig/terminal-shop/models/product.rbs +20 -27
  226. data/sig/terminal-shop/models/product_get_params.rbs +2 -7
  227. data/sig/terminal-shop/models/product_get_response.rbs +1 -6
  228. data/sig/terminal-shop/models/product_list_params.rbs +2 -7
  229. data/sig/terminal-shop/models/product_list_response.rbs +1 -6
  230. data/sig/terminal-shop/models/product_variant.rbs +1 -5
  231. data/sig/terminal-shop/models/profile.rbs +8 -17
  232. data/sig/terminal-shop/models/profile_me_params.rbs +2 -7
  233. data/sig/terminal-shop/models/profile_me_response.rbs +1 -6
  234. data/sig/terminal-shop/models/profile_update_params.rbs +6 -11
  235. data/sig/terminal-shop/models/profile_update_response.rbs +1 -6
  236. data/sig/terminal-shop/models/region.rbs +4 -2
  237. data/sig/terminal-shop/models/subscription.rbs +15 -27
  238. data/sig/terminal-shop/models/subscription_create_params.rbs +2 -7
  239. data/sig/terminal-shop/models/subscription_create_response.rbs +1 -6
  240. data/sig/terminal-shop/models/subscription_delete_params.rbs +2 -7
  241. data/sig/terminal-shop/models/subscription_delete_response.rbs +1 -6
  242. data/sig/terminal-shop/models/subscription_get_params.rbs +2 -7
  243. data/sig/terminal-shop/models/subscription_get_response.rbs +1 -6
  244. data/sig/terminal-shop/models/subscription_list_params.rbs +2 -7
  245. data/sig/terminal-shop/models/subscription_list_response.rbs +3 -6
  246. data/sig/terminal-shop/models/token.rbs +1 -5
  247. data/sig/terminal-shop/models/token_create_params.rbs +2 -7
  248. data/sig/terminal-shop/models/token_create_response.rbs +4 -12
  249. data/sig/terminal-shop/models/token_delete_params.rbs +2 -7
  250. data/sig/terminal-shop/models/token_delete_response.rbs +1 -6
  251. data/sig/terminal-shop/models/token_get_params.rbs +2 -6
  252. data/sig/terminal-shop/models/token_get_response.rbs +1 -6
  253. data/sig/terminal-shop/models/token_list_params.rbs +2 -7
  254. data/sig/terminal-shop/models/token_list_response.rbs +1 -6
  255. data/sig/terminal-shop/models/view_init_params.rbs +2 -6
  256. data/sig/terminal-shop/models/view_init_response.rbs +15 -23
  257. data/sig/terminal-shop/request_options.rbs +2 -12
  258. data/sig/terminal-shop/resources/address.rbs +22 -41
  259. data/sig/terminal-shop/resources/app.rbs +16 -34
  260. data/sig/terminal-shop/resources/card.rbs +18 -40
  261. data/sig/terminal-shop/resources/cart.rbs +22 -47
  262. data/sig/terminal-shop/resources/email.rbs +4 -8
  263. data/sig/terminal-shop/resources/order.rbs +13 -26
  264. data/sig/terminal-shop/resources/product.rbs +7 -16
  265. data/sig/terminal-shop/resources/profile.rbs +8 -16
  266. data/sig/terminal-shop/resources/subscription.rbs +21 -43
  267. data/sig/terminal-shop/resources/token.rbs +14 -32
  268. data/sig/terminal-shop/resources/view.rbs +3 -7
  269. data/sig/terminal-shop/transport/base_client.rbs +110 -0
  270. data/sig/terminal-shop/transport/pooled_net_requester.rbs +39 -0
  271. data/sig/terminal-shop/type/array_of.rbs +36 -0
  272. data/sig/terminal-shop/type/base_model.rbs +73 -0
  273. data/sig/terminal-shop/type/base_page.rbs +22 -0
  274. data/sig/terminal-shop/type/boolean_model.rbs +18 -0
  275. data/sig/terminal-shop/type/converter.rbs +42 -0
  276. data/sig/terminal-shop/type/enum.rbs +22 -0
  277. data/sig/terminal-shop/type/hash_of.rbs +36 -0
  278. data/sig/terminal-shop/type/request_parameters.rbs +13 -0
  279. data/sig/terminal-shop/type/union.rbs +40 -0
  280. data/sig/terminal-shop/type/unknown.rbs +18 -0
  281. data/sig/terminal-shop/type.rbs +22 -0
  282. data/sig/terminal-shop/util.rbs +5 -5
  283. data/sig/terminal-shop/version.rbs +1 -1
  284. metadata +41 -17
  285. data/lib/terminal-shop/base_client.rb +0 -456
  286. data/lib/terminal-shop/base_model.rb +0 -1188
  287. data/lib/terminal-shop/base_page.rb +0 -60
  288. data/lib/terminal-shop/extern.rb +0 -7
  289. data/lib/terminal-shop/pooled_net_requester.rb +0 -169
  290. data/rbi/lib/terminal-shop/base_client.rbi +0 -198
  291. data/rbi/lib/terminal-shop/base_model.rbi +0 -622
  292. data/rbi/lib/terminal-shop/base_page.rbi +0 -38
  293. data/rbi/lib/terminal-shop/extern.rbi +0 -7
  294. data/rbi/lib/terminal-shop/pooled_net_requester.rbi +0 -48
  295. data/sig/terminal-shop/base_client.rbs +0 -108
  296. data/sig/terminal-shop/base_model.rbs +0 -246
  297. data/sig/terminal-shop/base_page.rbs +0 -20
  298. data/sig/terminal-shop/extern.rbs +0 -4
  299. data/sig/terminal-shop/pooled_net_requester.rbs +0 -35
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TerminalShop
4
- # @example
5
- # ```ruby
6
- # if page.has_next?
7
- # page = page.next_page
8
- # end
9
- # ```
10
- #
11
- # @example
12
- # ```ruby
13
- # page.auto_paging_each do |product|
14
- # puts(product)
15
- # end
16
- # ```
17
- #
18
- # @example
19
- # ```ruby
20
- # products = page
21
- # .to_enum
22
- # .lazy
23
- # .select { _1.object_id.even? }
24
- # .map(&:itself)
25
- # .take(2)
26
- # .to_a
27
- #
28
- # products => Array
29
- # ```
30
- module BasePage
31
- # @return [Boolean]
32
- def next_page? = (raise NotImplementedError)
33
-
34
- # @raise [TerminalShop::APIError]
35
- # @return [TerminalShop::BasePage]
36
- def next_page = (raise NotImplementedError)
37
-
38
- # @param blk [Proc]
39
- #
40
- # @return [void]
41
- def auto_paging_each(&) = (raise NotImplementedError)
42
-
43
- # @return [Enumerable]
44
- def to_enum = super(:auto_paging_each)
45
-
46
- alias_method :enum_for, :to_enum
47
-
48
- # @api private
49
- #
50
- # @param client [TerminalShop::BaseClient]
51
- # @param req [Hash{Symbol=>Object}]
52
- # @param headers [Hash{String=>String}, Net::HTTPHeader]
53
- # @param page_data [Object]
54
- def initialize(client:, req:, headers:, page_data:)
55
- @client = client
56
- @req = req
57
- super()
58
- end
59
- end
60
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TerminalShop
4
- # @api private
5
- module Extern
6
- end
7
- end
@@ -1,169 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TerminalShop
4
- # @api private
5
- class PooledNetRequester
6
- class << self
7
- # @api private
8
- #
9
- # @param url [URI::Generic]
10
- #
11
- # @return [Net::HTTP]
12
- def connect(url)
13
- port =
14
- case [url.port, url.scheme]
15
- in [Integer, _]
16
- url.port
17
- in [nil, "http" | "ws"]
18
- Net::HTTP.http_default_port
19
- in [nil, "https" | "wss"]
20
- Net::HTTP.https_default_port
21
- end
22
-
23
- Net::HTTP.new(url.host, port).tap do
24
- _1.use_ssl = %w[https wss].include?(url.scheme)
25
- _1.max_retries = 0
26
- end
27
- end
28
-
29
- # @api private
30
- #
31
- # @param conn [Net::HTTP]
32
- # @param deadline [Float]
33
- def calibrate_socket_timeout(conn, deadline)
34
- timeout = deadline - TerminalShop::Util.monotonic_secs
35
- conn.open_timeout = conn.read_timeout = conn.write_timeout = conn.continue_timeout = timeout
36
- end
37
-
38
- # @api private
39
- #
40
- # @param request [Hash{Symbol=>Object}] .
41
- #
42
- # @option request [Symbol] :method
43
- #
44
- # @option request [URI::Generic] :url
45
- #
46
- # @option request [Hash{String=>String}] :headers
47
- #
48
- # @param blk [Proc]
49
- #
50
- # @return [Net::HTTPGenericRequest]
51
- def build_request(request, &)
52
- method, url, headers, body = request.fetch_values(:method, :url, :headers, :body)
53
- req = Net::HTTPGenericRequest.new(
54
- method.to_s.upcase,
55
- !body.nil?,
56
- method != :head,
57
- url.to_s
58
- )
59
-
60
- headers.each { req[_1] = _2 }
61
-
62
- case body
63
- in nil
64
- nil
65
- in String
66
- req["content-length"] ||= body.bytesize.to_s unless req["transfer-encoding"]
67
- req.body_stream = TerminalShop::Util::ReadIOAdapter.new(body, &)
68
- in StringIO
69
- req["content-length"] ||= body.size.to_s unless req["transfer-encoding"]
70
- req.body_stream = TerminalShop::Util::ReadIOAdapter.new(body, &)
71
- in IO | Enumerator
72
- req["transfer-encoding"] ||= "chunked" unless req["content-length"]
73
- req.body_stream = TerminalShop::Util::ReadIOAdapter.new(body, &)
74
- end
75
-
76
- req
77
- end
78
- end
79
-
80
- # @api private
81
- #
82
- # @param url [URI::Generic]
83
- # @param deadline [Float]
84
- # @param blk [Proc]
85
- private def with_pool(url, deadline:, &blk)
86
- origin = TerminalShop::Util.uri_origin(url)
87
- timeout = deadline - TerminalShop::Util.monotonic_secs
88
- pool =
89
- @mutex.synchronize do
90
- @pools[origin] ||= ConnectionPool.new(size: @size) do
91
- self.class.connect(url)
92
- end
93
- end
94
-
95
- pool.with(timeout: timeout, &blk)
96
- end
97
-
98
- # @api private
99
- #
100
- # @param request [Hash{Symbol=>Object}] .
101
- #
102
- # @option request [Symbol] :method
103
- #
104
- # @option request [URI::Generic] :url
105
- #
106
- # @option request [Hash{String=>String}] :headers
107
- #
108
- # @option request [Object] :body
109
- #
110
- # @option request [Float] :deadline
111
- #
112
- # @return [Array(Integer, Net::HTTPResponse, Enumerable)]
113
- def execute(request)
114
- url, deadline = request.fetch_values(:url, :deadline)
115
-
116
- eof = false
117
- finished = false
118
- enum = Enumerator.new do |y|
119
- with_pool(url, deadline: deadline) do |conn|
120
- next if finished
121
-
122
- req = self.class.build_request(request) do
123
- self.class.calibrate_socket_timeout(conn, deadline)
124
- end
125
-
126
- self.class.calibrate_socket_timeout(conn, deadline)
127
- conn.start unless conn.started?
128
-
129
- self.class.calibrate_socket_timeout(conn, deadline)
130
- conn.request(req) do |rsp|
131
- y << [conn, req, rsp]
132
- break if finished
133
-
134
- rsp.read_body do |bytes|
135
- y << bytes
136
- break if finished
137
-
138
- self.class.calibrate_socket_timeout(conn, deadline)
139
- end
140
- eof = true
141
- end
142
- end
143
- rescue Timeout::Error
144
- raise TerminalShop::APITimeoutError
145
- end
146
-
147
- conn, _, response = enum.next
148
- body = TerminalShop::Util.fused_enum(enum, external: true) do
149
- finished = true
150
- tap do
151
- enum.next
152
- rescue StopIteration
153
- nil
154
- end
155
- conn.finish if !eof && conn&.started?
156
- end
157
- [Integer(response.code), response, (response.body = body)]
158
- end
159
-
160
- # @api private
161
- #
162
- # @param size [Integer]
163
- def initialize(size: Etc.nprocessors)
164
- @mutex = Mutex.new
165
- @size = size
166
- @pools = {}
167
- end
168
- end
169
- end
@@ -1,198 +0,0 @@
1
- # typed: strong
2
-
3
- module TerminalShop
4
- # @api private
5
- class BaseClient
6
- abstract!
7
-
8
- RequestComponentsShape = T.type_alias do
9
- {
10
- method: Symbol,
11
- path: T.any(String, T::Array[String]),
12
- query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
13
- headers: T.nilable(
14
- T::Hash[String,
15
- T.nilable(
16
- T.any(
17
- String,
18
- Integer,
19
- T::Array[T.nilable(T.any(String, Integer))]
20
- )
21
- )]
22
- ),
23
- body: T.nilable(T.anything),
24
- unwrap: T.nilable(Symbol),
25
- page: T.nilable(T::Class[TerminalShop::BasePage[TerminalShop::BaseModel]]),
26
- stream: T.nilable(T::Class[T.anything]),
27
- model: T.nilable(TerminalShop::Converter::Input),
28
- options: T.nilable(T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
29
- }
30
- end
31
-
32
- RequestInputShape = T.type_alias do
33
- {
34
- method: Symbol,
35
- url: URI::Generic,
36
- headers: T::Hash[String, String],
37
- body: T.anything,
38
- max_retries: Integer,
39
- timeout: Float
40
- }
41
- end
42
-
43
- MAX_REDIRECTS = 20
44
-
45
- PLATFORM_HEADERS = T::Hash[String, String]
46
-
47
- class << self
48
- # @api private
49
- sig { params(req: TerminalShop::BaseClient::RequestComponentsShape).void }
50
- def validate!(req)
51
- end
52
-
53
- # @api private
54
- sig do
55
- params(status: Integer, headers: T.any(T::Hash[String, String], Net::HTTPHeader)).returns(T::Boolean)
56
- end
57
- def should_retry?(status, headers:)
58
- end
59
-
60
- # @api private
61
- sig do
62
- params(
63
- request: TerminalShop::BaseClient::RequestInputShape,
64
- status: Integer,
65
- response_headers: T.any(T::Hash[String, String], Net::HTTPHeader)
66
- )
67
- .returns(TerminalShop::BaseClient::RequestInputShape)
68
- end
69
- def follow_redirect(request, status:, response_headers:)
70
- end
71
-
72
- # @api private
73
- sig do
74
- params(
75
- status: T.any(Integer, TerminalShop::APIConnectionError),
76
- stream: T.nilable(T::Enumerable[String])
77
- )
78
- .void
79
- end
80
- def reap_connection!(status, stream:)
81
- end
82
- end
83
-
84
- sig { returns(T.anything) }
85
- def requester
86
- end
87
-
88
- sig { params(_: T.anything).returns(T.anything) }
89
- def requester=(_)
90
- end
91
-
92
- # @api private
93
- sig do
94
- params(
95
- base_url: String,
96
- timeout: Float,
97
- max_retries: Integer,
98
- initial_retry_delay: Float,
99
- max_retry_delay: Float,
100
- headers: T::Hash[String,
101
- T.nilable(T.any(String, Integer, T::Array[T.nilable(T.any(String, Integer))]))],
102
- idempotency_header: T.nilable(String)
103
- )
104
- .returns(T.attached_class)
105
- end
106
- def self.new(
107
- base_url:,
108
- timeout: 0.0,
109
- max_retries: 0,
110
- initial_retry_delay: 0.0,
111
- max_retry_delay: 0.0,
112
- headers: {},
113
- idempotency_header: nil
114
- )
115
- end
116
-
117
- # @api private
118
- sig { overridable.returns(T::Hash[String, String]) }
119
- private def auth_headers
120
- end
121
-
122
- # @api private
123
- sig { returns(String) }
124
- private def generate_idempotency_key
125
- end
126
-
127
- # @api private
128
- sig do
129
- overridable
130
- .params(req: TerminalShop::BaseClient::RequestComponentsShape, opts: T::Hash[Symbol, T.anything])
131
- .returns(TerminalShop::BaseClient::RequestInputShape)
132
- end
133
- private def build_request(req, opts)
134
- end
135
-
136
- # @api private
137
- sig { params(headers: T::Hash[String, String], retry_count: Integer).returns(Float) }
138
- private def retry_delay(headers, retry_count:)
139
- end
140
-
141
- # @api private
142
- sig do
143
- params(
144
- request: TerminalShop::BaseClient::RequestInputShape,
145
- redirect_count: Integer,
146
- retry_count: Integer,
147
- send_retry_header: T::Boolean
148
- )
149
- .returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
150
- end
151
- private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
152
- end
153
-
154
- # Execute the request specified by `req`. This is the method that all resource
155
- # methods call into.
156
- sig do
157
- params(
158
- method: Symbol,
159
- path: T.any(String, T::Array[String]),
160
- query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
161
- headers: T.nilable(
162
- T::Hash[String,
163
- T.nilable(
164
- T.any(
165
- String,
166
- Integer,
167
- T::Array[T.nilable(T.any(String, Integer))]
168
- )
169
- )]
170
- ),
171
- body: T.nilable(T.anything),
172
- unwrap: T.nilable(Symbol),
173
- page: T.nilable(T::Class[TerminalShop::BasePage[TerminalShop::BaseModel]]),
174
- stream: T.nilable(T::Class[T.anything]),
175
- model: T.nilable(TerminalShop::Converter::Input),
176
- options: T.nilable(T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
177
- )
178
- .returns(T.anything)
179
- end
180
- def request(
181
- method,
182
- path,
183
- query: {},
184
- headers: {},
185
- body: nil,
186
- unwrap: nil,
187
- page: nil,
188
- stream: nil,
189
- model: TerminalShop::Unknown,
190
- options: {}
191
- )
192
- end
193
-
194
- sig { returns(String) }
195
- def inspect
196
- end
197
- end
198
- end