terminal-shop 1.7.0 → 2.0.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 (235) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -1
  3. data/lib/terminal-shop/base_client.rb +47 -56
  4. data/lib/terminal-shop/base_model.rb +300 -352
  5. data/lib/terminal-shop/base_page.rb +30 -31
  6. data/lib/terminal-shop/client.rb +2 -3
  7. data/lib/terminal-shop/errors.rb +12 -17
  8. data/lib/terminal-shop/extern.rb +1 -4
  9. data/lib/terminal-shop/models/product.rb +7 -3
  10. data/lib/terminal-shop/models/region.rb +7 -3
  11. data/lib/terminal-shop/models/subscription.rb +7 -3
  12. data/lib/terminal-shop/pooled_net_requester.rb +30 -21
  13. data/lib/terminal-shop/request_options.rb +5 -12
  14. data/lib/terminal-shop/resources/address.rb +0 -5
  15. data/lib/terminal-shop/resources/app.rb +0 -5
  16. data/lib/terminal-shop/resources/card.rb +0 -6
  17. data/lib/terminal-shop/resources/cart.rb +0 -7
  18. data/lib/terminal-shop/resources/email.rb +0 -2
  19. data/lib/terminal-shop/resources/order.rb +0 -4
  20. data/lib/terminal-shop/resources/product.rb +0 -3
  21. data/lib/terminal-shop/resources/profile.rb +0 -3
  22. data/lib/terminal-shop/resources/subscription.rb +0 -5
  23. data/lib/terminal-shop/resources/token.rb +0 -5
  24. data/lib/terminal-shop/resources/view.rb +0 -2
  25. data/lib/terminal-shop/util.rb +59 -77
  26. data/lib/terminal-shop/version.rb +1 -1
  27. data/lib/terminal-shop.rb +16 -0
  28. data/manifest.yaml +1 -0
  29. data/rbi/lib/terminal-shop/base_client.rbi +63 -41
  30. data/rbi/lib/terminal-shop/base_model.rbi +278 -129
  31. data/rbi/lib/terminal-shop/base_page.rbi +1 -4
  32. data/rbi/lib/terminal-shop/client.rbi +29 -30
  33. data/rbi/lib/terminal-shop/errors.rbi +12 -14
  34. data/rbi/lib/terminal-shop/extern.rbi +1 -1
  35. data/rbi/lib/terminal-shop/models/address.rbi +25 -51
  36. data/rbi/lib/terminal-shop/models/address_create_params.rbi +23 -46
  37. data/rbi/lib/terminal-shop/models/address_create_response.rbi +2 -6
  38. data/rbi/lib/terminal-shop/models/address_delete_params.rbi +1 -1
  39. data/rbi/lib/terminal-shop/models/address_delete_response.rbi +1 -6
  40. data/rbi/lib/terminal-shop/models/address_get_params.rbi +1 -1
  41. data/rbi/lib/terminal-shop/models/address_get_response.rbi +8 -6
  42. data/rbi/lib/terminal-shop/models/address_list_params.rbi +1 -1
  43. data/rbi/lib/terminal-shop/models/address_list_response.rbi +5 -6
  44. data/rbi/lib/terminal-shop/models/app.rbi +9 -24
  45. data/rbi/lib/terminal-shop/models/app_create_params.rbi +3 -13
  46. data/rbi/lib/terminal-shop/models/app_create_response.rbi +10 -20
  47. data/rbi/lib/terminal-shop/models/app_delete_params.rbi +1 -1
  48. data/rbi/lib/terminal-shop/models/app_delete_response.rbi +1 -6
  49. data/rbi/lib/terminal-shop/models/app_get_params.rbi +1 -1
  50. data/rbi/lib/terminal-shop/models/app_get_response.rbi +5 -6
  51. data/rbi/lib/terminal-shop/models/app_list_params.rbi +1 -1
  52. data/rbi/lib/terminal-shop/models/app_list_response.rbi +5 -6
  53. data/rbi/lib/terminal-shop/models/card.rbi +22 -36
  54. data/rbi/lib/terminal-shop/models/card_collect_params.rbi +1 -1
  55. data/rbi/lib/terminal-shop/models/card_collect_response.rbi +11 -14
  56. data/rbi/lib/terminal-shop/models/card_create_params.rbi +4 -7
  57. data/rbi/lib/terminal-shop/models/card_create_response.rbi +2 -6
  58. data/rbi/lib/terminal-shop/models/card_delete_params.rbi +1 -1
  59. data/rbi/lib/terminal-shop/models/card_delete_response.rbi +1 -6
  60. data/rbi/lib/terminal-shop/models/card_get_params.rbi +1 -1
  61. data/rbi/lib/terminal-shop/models/card_get_response.rbi +5 -6
  62. data/rbi/lib/terminal-shop/models/card_list_params.rbi +1 -1
  63. data/rbi/lib/terminal-shop/models/card_list_response.rbi +5 -6
  64. data/rbi/lib/terminal-shop/models/cart.rbi +53 -88
  65. data/rbi/lib/terminal-shop/models/cart_clear_params.rbi +1 -1
  66. data/rbi/lib/terminal-shop/models/cart_clear_response.rbi +1 -6
  67. data/rbi/lib/terminal-shop/models/cart_convert_params.rbi +1 -1
  68. data/rbi/lib/terminal-shop/models/cart_convert_response.rbi +5 -6
  69. data/rbi/lib/terminal-shop/models/cart_get_params.rbi +1 -1
  70. data/rbi/lib/terminal-shop/models/cart_get_response.rbi +5 -6
  71. data/rbi/lib/terminal-shop/models/cart_set_address_params.rbi +3 -7
  72. data/rbi/lib/terminal-shop/models/cart_set_address_response.rbi +1 -6
  73. data/rbi/lib/terminal-shop/models/cart_set_card_params.rbi +3 -7
  74. data/rbi/lib/terminal-shop/models/cart_set_card_response.rbi +1 -6
  75. data/rbi/lib/terminal-shop/models/cart_set_item_params.rbi +5 -13
  76. data/rbi/lib/terminal-shop/models/cart_set_item_response.rbi +5 -6
  77. data/rbi/lib/terminal-shop/models/email_create_params.rbi +3 -7
  78. data/rbi/lib/terminal-shop/models/email_create_response.rbi +1 -6
  79. data/rbi/lib/terminal-shop/models/order.rbi +80 -139
  80. data/rbi/lib/terminal-shop/models/order_create_params.rbi +7 -19
  81. data/rbi/lib/terminal-shop/models/order_create_response.rbi +2 -6
  82. data/rbi/lib/terminal-shop/models/order_get_params.rbi +1 -1
  83. data/rbi/lib/terminal-shop/models/order_get_response.rbi +5 -6
  84. data/rbi/lib/terminal-shop/models/order_list_params.rbi +1 -1
  85. data/rbi/lib/terminal-shop/models/order_list_response.rbi +5 -6
  86. data/rbi/lib/terminal-shop/models/product.rbi +52 -80
  87. data/rbi/lib/terminal-shop/models/product_get_params.rbi +1 -1
  88. data/rbi/lib/terminal-shop/models/product_get_response.rbi +8 -6
  89. data/rbi/lib/terminal-shop/models/product_list_params.rbi +1 -1
  90. data/rbi/lib/terminal-shop/models/product_list_response.rbi +5 -6
  91. data/rbi/lib/terminal-shop/models/product_variant.rbi +7 -18
  92. data/rbi/lib/terminal-shop/models/profile.rbi +20 -36
  93. data/rbi/lib/terminal-shop/models/profile_me_params.rbi +1 -1
  94. data/rbi/lib/terminal-shop/models/profile_me_response.rbi +8 -6
  95. data/rbi/lib/terminal-shop/models/profile_update_params.rbi +3 -13
  96. data/rbi/lib/terminal-shop/models/profile_update_response.rbi +8 -6
  97. data/rbi/lib/terminal-shop/models/region.rbi +10 -8
  98. data/rbi/lib/terminal-shop/models/subscription.rbi +35 -75
  99. data/rbi/lib/terminal-shop/models/subscription_create_params.rbi +1 -1
  100. data/rbi/lib/terminal-shop/models/subscription_create_response.rbi +1 -6
  101. data/rbi/lib/terminal-shop/models/subscription_delete_params.rbi +1 -1
  102. data/rbi/lib/terminal-shop/models/subscription_delete_response.rbi +1 -6
  103. data/rbi/lib/terminal-shop/models/subscription_get_params.rbi +1 -1
  104. data/rbi/lib/terminal-shop/models/subscription_get_response.rbi +8 -6
  105. data/rbi/lib/terminal-shop/models/subscription_list_params.rbi +1 -1
  106. data/rbi/lib/terminal-shop/models/subscription_list_response.rbi +4 -8
  107. data/rbi/lib/terminal-shop/models/token.rbi +8 -18
  108. data/rbi/lib/terminal-shop/models/token_create_params.rbi +1 -1
  109. data/rbi/lib/terminal-shop/models/token_create_response.rbi +11 -20
  110. data/rbi/lib/terminal-shop/models/token_delete_params.rbi +1 -1
  111. data/rbi/lib/terminal-shop/models/token_delete_response.rbi +1 -6
  112. data/rbi/lib/terminal-shop/models/token_get_params.rbi +1 -1
  113. data/rbi/lib/terminal-shop/models/token_get_response.rbi +6 -6
  114. data/rbi/lib/terminal-shop/models/token_list_params.rbi +1 -1
  115. data/rbi/lib/terminal-shop/models/token_list_response.rbi +5 -6
  116. data/rbi/lib/terminal-shop/models/view_init_params.rbi +1 -1
  117. data/rbi/lib/terminal-shop/models/view_init_response.rbi +37 -81
  118. data/rbi/lib/terminal-shop/pooled_net_requester.rbi +24 -6
  119. data/rbi/lib/terminal-shop/request_options.rbi +32 -57
  120. data/rbi/lib/terminal-shop/resources/address.rbi +26 -6
  121. data/rbi/lib/terminal-shop/resources/app.rbi +18 -6
  122. data/rbi/lib/terminal-shop/resources/card.rbi +27 -8
  123. data/rbi/lib/terminal-shop/resources/cart.rbi +29 -9
  124. data/rbi/lib/terminal-shop/resources/email.rbi +7 -2
  125. data/rbi/lib/terminal-shop/resources/order.rbi +20 -5
  126. data/rbi/lib/terminal-shop/resources/product.rbi +9 -3
  127. data/rbi/lib/terminal-shop/resources/profile.rbi +4 -2
  128. data/rbi/lib/terminal-shop/resources/subscription.rbi +26 -6
  129. data/rbi/lib/terminal-shop/resources/token.rbi +18 -6
  130. data/rbi/lib/terminal-shop/resources/view.rbi +3 -1
  131. data/rbi/lib/terminal-shop/util.rbi +78 -20
  132. data/rbi/lib/terminal-shop/version.rbi +1 -1
  133. data/sig/terminal-shop/base_client.rbs +20 -15
  134. data/sig/terminal-shop/base_model.rbs +36 -18
  135. data/sig/terminal-shop/client.rbs +8 -8
  136. data/sig/terminal-shop/errors.rbs +21 -21
  137. data/sig/terminal-shop/models/address.rbs +11 -15
  138. data/sig/terminal-shop/models/address_create_params.rbs +11 -16
  139. data/sig/terminal-shop/models/address_create_response.rbs +1 -6
  140. data/sig/terminal-shop/models/address_delete_params.rbs +1 -6
  141. data/sig/terminal-shop/models/address_delete_response.rbs +1 -6
  142. data/sig/terminal-shop/models/address_get_params.rbs +1 -6
  143. data/sig/terminal-shop/models/address_get_response.rbs +1 -6
  144. data/sig/terminal-shop/models/address_list_params.rbs +1 -6
  145. data/sig/terminal-shop/models/address_list_response.rbs +1 -6
  146. data/sig/terminal-shop/models/app.rbs +6 -5
  147. data/sig/terminal-shop/models/app_create_params.rbs +5 -10
  148. data/sig/terminal-shop/models/app_create_response.rbs +4 -12
  149. data/sig/terminal-shop/models/app_delete_params.rbs +1 -6
  150. data/sig/terminal-shop/models/app_delete_response.rbs +1 -6
  151. data/sig/terminal-shop/models/app_get_params.rbs +1 -5
  152. data/sig/terminal-shop/models/app_get_response.rbs +1 -5
  153. data/sig/terminal-shop/models/app_list_params.rbs +1 -5
  154. data/sig/terminal-shop/models/app_list_response.rbs +1 -6
  155. data/sig/terminal-shop/models/card.rbs +7 -16
  156. data/sig/terminal-shop/models/card_collect_params.rbs +1 -6
  157. data/sig/terminal-shop/models/card_collect_response.rbs +4 -12
  158. data/sig/terminal-shop/models/card_create_params.rbs +4 -6
  159. data/sig/terminal-shop/models/card_create_response.rbs +1 -6
  160. data/sig/terminal-shop/models/card_delete_params.rbs +1 -6
  161. data/sig/terminal-shop/models/card_delete_response.rbs +1 -6
  162. data/sig/terminal-shop/models/card_get_params.rbs +1 -5
  163. data/sig/terminal-shop/models/card_get_response.rbs +1 -6
  164. data/sig/terminal-shop/models/card_list_params.rbs +1 -5
  165. data/sig/terminal-shop/models/card_list_response.rbs +1 -6
  166. data/sig/terminal-shop/models/cart.rbs +20 -34
  167. data/sig/terminal-shop/models/cart_clear_params.rbs +1 -6
  168. data/sig/terminal-shop/models/cart_clear_response.rbs +1 -6
  169. data/sig/terminal-shop/models/cart_convert_params.rbs +1 -6
  170. data/sig/terminal-shop/models/cart_convert_response.rbs +1 -6
  171. data/sig/terminal-shop/models/cart_get_params.rbs +1 -5
  172. data/sig/terminal-shop/models/cart_get_response.rbs +1 -6
  173. data/sig/terminal-shop/models/cart_set_address_params.rbs +4 -9
  174. data/sig/terminal-shop/models/cart_set_address_response.rbs +1 -6
  175. data/sig/terminal-shop/models/cart_set_card_params.rbs +4 -6
  176. data/sig/terminal-shop/models/cart_set_card_response.rbs +1 -6
  177. data/sig/terminal-shop/models/cart_set_item_params.rbs +5 -10
  178. data/sig/terminal-shop/models/cart_set_item_response.rbs +1 -6
  179. data/sig/terminal-shop/models/email_create_params.rbs +4 -6
  180. data/sig/terminal-shop/models/email_create_response.rbs +1 -6
  181. data/sig/terminal-shop/models/order.rbs +31 -50
  182. data/sig/terminal-shop/models/order_create_params.rbs +6 -11
  183. data/sig/terminal-shop/models/order_create_response.rbs +1 -6
  184. data/sig/terminal-shop/models/order_get_params.rbs +1 -5
  185. data/sig/terminal-shop/models/order_get_response.rbs +1 -6
  186. data/sig/terminal-shop/models/order_list_params.rbs +1 -6
  187. data/sig/terminal-shop/models/order_list_response.rbs +1 -6
  188. data/sig/terminal-shop/models/product.rbs +20 -27
  189. data/sig/terminal-shop/models/product_get_params.rbs +1 -6
  190. data/sig/terminal-shop/models/product_get_response.rbs +1 -6
  191. data/sig/terminal-shop/models/product_list_params.rbs +1 -6
  192. data/sig/terminal-shop/models/product_list_response.rbs +1 -6
  193. data/sig/terminal-shop/models/product_variant.rbs +1 -5
  194. data/sig/terminal-shop/models/profile.rbs +8 -17
  195. data/sig/terminal-shop/models/profile_me_params.rbs +1 -6
  196. data/sig/terminal-shop/models/profile_me_response.rbs +1 -6
  197. data/sig/terminal-shop/models/profile_update_params.rbs +5 -10
  198. data/sig/terminal-shop/models/profile_update_response.rbs +1 -6
  199. data/sig/terminal-shop/models/region.rbs +4 -2
  200. data/sig/terminal-shop/models/subscription.rbs +15 -27
  201. data/sig/terminal-shop/models/subscription_create_params.rbs +1 -6
  202. data/sig/terminal-shop/models/subscription_create_response.rbs +1 -6
  203. data/sig/terminal-shop/models/subscription_delete_params.rbs +1 -6
  204. data/sig/terminal-shop/models/subscription_delete_response.rbs +1 -6
  205. data/sig/terminal-shop/models/subscription_get_params.rbs +1 -6
  206. data/sig/terminal-shop/models/subscription_get_response.rbs +1 -6
  207. data/sig/terminal-shop/models/subscription_list_params.rbs +1 -6
  208. data/sig/terminal-shop/models/subscription_list_response.rbs +3 -6
  209. data/sig/terminal-shop/models/token.rbs +1 -5
  210. data/sig/terminal-shop/models/token_create_params.rbs +1 -6
  211. data/sig/terminal-shop/models/token_create_response.rbs +4 -12
  212. data/sig/terminal-shop/models/token_delete_params.rbs +1 -6
  213. data/sig/terminal-shop/models/token_delete_response.rbs +1 -6
  214. data/sig/terminal-shop/models/token_get_params.rbs +1 -5
  215. data/sig/terminal-shop/models/token_get_response.rbs +1 -6
  216. data/sig/terminal-shop/models/token_list_params.rbs +1 -6
  217. data/sig/terminal-shop/models/token_list_response.rbs +1 -6
  218. data/sig/terminal-shop/models/view_init_params.rbs +1 -5
  219. data/sig/terminal-shop/models/view_init_response.rbs +15 -23
  220. data/sig/terminal-shop/pooled_net_requester.rbs +10 -3
  221. data/sig/terminal-shop/request_options.rbs +2 -2
  222. data/sig/terminal-shop/resources/address.rbs +22 -41
  223. data/sig/terminal-shop/resources/app.rbs +16 -34
  224. data/sig/terminal-shop/resources/card.rbs +18 -40
  225. data/sig/terminal-shop/resources/cart.rbs +22 -47
  226. data/sig/terminal-shop/resources/email.rbs +4 -8
  227. data/sig/terminal-shop/resources/order.rbs +13 -26
  228. data/sig/terminal-shop/resources/product.rbs +7 -16
  229. data/sig/terminal-shop/resources/profile.rbs +8 -16
  230. data/sig/terminal-shop/resources/subscription.rbs +21 -43
  231. data/sig/terminal-shop/resources/token.rbs +14 -32
  232. data/sig/terminal-shop/resources/view.rbs +3 -7
  233. data/sig/terminal-shop/util.rbs +9 -9
  234. data/sig/terminal-shop/version.rbs +1 -1
  235. metadata +4 -4
@@ -7,7 +7,7 @@ module TerminalShop
7
7
  include TerminalShop::RequestParameters
8
8
 
9
9
  sig do
10
- params(request_options: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
10
+ params(request_options: T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
11
11
  .returns(T.attached_class)
12
12
  end
13
13
  def self.new(request_options: {})
@@ -4,12 +4,7 @@ module TerminalShop
4
4
  module Models
5
5
  class SubscriptionCreateResponse < TerminalShop::BaseModel
6
6
  sig { returns(Symbol) }
7
- def data
8
- end
9
-
10
- sig { params(_: Symbol).returns(Symbol) }
11
- def data=(_)
12
- end
7
+ attr_accessor :data
13
8
 
14
9
  sig { params(data: Symbol).returns(T.attached_class) }
15
10
  def self.new(data: :ok)
@@ -7,7 +7,7 @@ module TerminalShop
7
7
  include TerminalShop::RequestParameters
8
8
 
9
9
  sig do
10
- params(request_options: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
10
+ params(request_options: T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
11
11
  .returns(T.attached_class)
12
12
  end
13
13
  def self.new(request_options: {})
@@ -4,12 +4,7 @@ module TerminalShop
4
4
  module Models
5
5
  class SubscriptionDeleteResponse < TerminalShop::BaseModel
6
6
  sig { returns(Symbol) }
7
- def data
8
- end
9
-
10
- sig { params(_: Symbol).returns(Symbol) }
11
- def data=(_)
12
- end
7
+ attr_accessor :data
13
8
 
14
9
  sig { params(data: Symbol).returns(T.attached_class) }
15
10
  def self.new(data: :ok)
@@ -7,7 +7,7 @@ module TerminalShop
7
7
  include TerminalShop::RequestParameters
8
8
 
9
9
  sig do
10
- params(request_options: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
10
+ params(request_options: T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
11
11
  .returns(T.attached_class)
12
12
  end
13
13
  def self.new(request_options: {})
@@ -3,15 +3,17 @@
3
3
  module TerminalShop
4
4
  module Models
5
5
  class SubscriptionGetResponse < TerminalShop::BaseModel
6
+ # Subscription to a Terminal shop product.
6
7
  sig { returns(TerminalShop::Models::SubscriptionAPI) }
7
- def data
8
- end
8
+ attr_reader :data
9
9
 
10
- sig { params(_: TerminalShop::Models::SubscriptionAPI).returns(TerminalShop::Models::SubscriptionAPI) }
11
- def data=(_)
12
- end
10
+ sig { params(data: T.any(TerminalShop::Models::SubscriptionAPI, TerminalShop::Util::AnyHash)).void }
11
+ attr_writer :data
13
12
 
14
- sig { params(data: TerminalShop::Models::SubscriptionAPI).returns(T.attached_class) }
13
+ sig do
14
+ params(data: T.any(TerminalShop::Models::SubscriptionAPI, TerminalShop::Util::AnyHash))
15
+ .returns(T.attached_class)
16
+ end
15
17
  def self.new(data:)
16
18
  end
17
19
 
@@ -7,7 +7,7 @@ module TerminalShop
7
7
  include TerminalShop::RequestParameters
8
8
 
9
9
  sig do
10
- params(request_options: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
10
+ params(request_options: T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
11
11
  .returns(T.attached_class)
12
12
  end
13
13
  def self.new(request_options: {})
@@ -3,18 +3,14 @@
3
3
  module TerminalShop
4
4
  module Models
5
5
  class SubscriptionListResponse < TerminalShop::BaseModel
6
+ # List of subscriptions.
6
7
  sig { returns(T::Array[TerminalShop::Models::SubscriptionAPI]) }
7
- def data
8
- end
8
+ attr_accessor :data
9
9
 
10
10
  sig do
11
- params(_: T::Array[TerminalShop::Models::SubscriptionAPI])
12
- .returns(T::Array[TerminalShop::Models::SubscriptionAPI])
13
- end
14
- def data=(_)
11
+ params(data: T::Array[T.any(TerminalShop::Models::SubscriptionAPI, TerminalShop::Util::AnyHash)])
12
+ .returns(T.attached_class)
15
13
  end
16
-
17
- sig { params(data: T::Array[TerminalShop::Models::SubscriptionAPI]).returns(T.attached_class) }
18
14
  def self.new(data:)
19
15
  end
20
16
 
@@ -3,30 +3,20 @@
3
3
  module TerminalShop
4
4
  module Models
5
5
  class TokenAPI < TerminalShop::BaseModel
6
+ # Unique object identifier. The format and length of IDs may change over time.
6
7
  sig { returns(String) }
7
- def id
8
- end
9
-
10
- sig { params(_: String).returns(String) }
11
- def id=(_)
12
- end
8
+ attr_accessor :id
13
9
 
10
+ # Personal access token (obfuscated).
14
11
  sig { returns(String) }
15
- def token
16
- end
17
-
18
- sig { params(_: String).returns(String) }
19
- def token=(_)
20
- end
12
+ attr_accessor :token
21
13
 
14
+ # The created time for the token.
22
15
  sig { returns(String) }
23
- def created
24
- end
25
-
26
- sig { params(_: String).returns(String) }
27
- def created=(_)
28
- end
16
+ attr_accessor :created
29
17
 
18
+ # A personal access token used to access the Terminal API. If you leak this,
19
+ # expect large sums of coffee to be ordered on your credit card.
30
20
  sig { params(id: String, token: String, created: String).returns(T.attached_class) }
31
21
  def self.new(id:, token:, created:)
32
22
  end
@@ -7,7 +7,7 @@ module TerminalShop
7
7
  include TerminalShop::RequestParameters
8
8
 
9
9
  sig do
10
- params(request_options: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
10
+ params(request_options: T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
11
11
  .returns(T.attached_class)
12
12
  end
13
13
  def self.new(request_options: {})
@@ -4,17 +4,15 @@ module TerminalShop
4
4
  module Models
5
5
  class TokenCreateResponse < TerminalShop::BaseModel
6
6
  sig { returns(TerminalShop::Models::TokenCreateResponse::Data) }
7
- def data
8
- end
7
+ attr_reader :data
8
+
9
+ sig { params(data: T.any(TerminalShop::Models::TokenCreateResponse::Data, TerminalShop::Util::AnyHash)).void }
10
+ attr_writer :data
9
11
 
10
12
  sig do
11
- params(_: TerminalShop::Models::TokenCreateResponse::Data)
12
- .returns(TerminalShop::Models::TokenCreateResponse::Data)
13
- end
14
- def data=(_)
13
+ params(data: T.any(TerminalShop::Models::TokenCreateResponse::Data, TerminalShop::Util::AnyHash))
14
+ .returns(T.attached_class)
15
15
  end
16
-
17
- sig { params(data: TerminalShop::Models::TokenCreateResponse::Data).returns(T.attached_class) }
18
16
  def self.new(data:)
19
17
  end
20
18
 
@@ -23,21 +21,14 @@ module TerminalShop
23
21
  end
24
22
 
25
23
  class Data < TerminalShop::BaseModel
24
+ # Personal token ID.
26
25
  sig { returns(String) }
27
- def id
28
- end
29
-
30
- sig { params(_: String).returns(String) }
31
- def id=(_)
32
- end
26
+ attr_accessor :id
33
27
 
28
+ # Personal access token. Include this in the Authorization header
29
+ # (`Bearer <token>`) when accessing the Terminal API.
34
30
  sig { returns(String) }
35
- def token
36
- end
37
-
38
- sig { params(_: String).returns(String) }
39
- def token=(_)
40
- end
31
+ attr_accessor :token
41
32
 
42
33
  sig { params(id: String, token: String).returns(T.attached_class) }
43
34
  def self.new(id:, token:)
@@ -7,7 +7,7 @@ module TerminalShop
7
7
  include TerminalShop::RequestParameters
8
8
 
9
9
  sig do
10
- params(request_options: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
10
+ params(request_options: T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
11
11
  .returns(T.attached_class)
12
12
  end
13
13
  def self.new(request_options: {})
@@ -4,12 +4,7 @@ module TerminalShop
4
4
  module Models
5
5
  class TokenDeleteResponse < TerminalShop::BaseModel
6
6
  sig { returns(Symbol) }
7
- def data
8
- end
9
-
10
- sig { params(_: Symbol).returns(Symbol) }
11
- def data=(_)
12
- end
7
+ attr_accessor :data
13
8
 
14
9
  sig { params(data: Symbol).returns(T.attached_class) }
15
10
  def self.new(data: :ok)
@@ -7,7 +7,7 @@ module TerminalShop
7
7
  include TerminalShop::RequestParameters
8
8
 
9
9
  sig do
10
- params(request_options: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
10
+ params(request_options: T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
11
11
  .returns(T.attached_class)
12
12
  end
13
13
  def self.new(request_options: {})
@@ -3,15 +3,15 @@
3
3
  module TerminalShop
4
4
  module Models
5
5
  class TokenGetResponse < TerminalShop::BaseModel
6
+ # A personal access token used to access the Terminal API. If you leak this,
7
+ # expect large sums of coffee to be ordered on your credit card.
6
8
  sig { returns(TerminalShop::Models::TokenAPI) }
7
- def data
8
- end
9
+ attr_reader :data
9
10
 
10
- sig { params(_: TerminalShop::Models::TokenAPI).returns(TerminalShop::Models::TokenAPI) }
11
- def data=(_)
12
- end
11
+ sig { params(data: T.any(TerminalShop::Models::TokenAPI, TerminalShop::Util::AnyHash)).void }
12
+ attr_writer :data
13
13
 
14
- sig { params(data: TerminalShop::Models::TokenAPI).returns(T.attached_class) }
14
+ sig { params(data: T.any(TerminalShop::Models::TokenAPI, TerminalShop::Util::AnyHash)).returns(T.attached_class) }
15
15
  def self.new(data:)
16
16
  end
17
17
 
@@ -7,7 +7,7 @@ module TerminalShop
7
7
  include TerminalShop::RequestParameters
8
8
 
9
9
  sig do
10
- params(request_options: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
10
+ params(request_options: T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
11
11
  .returns(T.attached_class)
12
12
  end
13
13
  def self.new(request_options: {})
@@ -3,15 +3,14 @@
3
3
  module TerminalShop
4
4
  module Models
5
5
  class TokenListResponse < TerminalShop::BaseModel
6
+ # List of personal access tokens.
6
7
  sig { returns(T::Array[TerminalShop::Models::TokenAPI]) }
7
- def data
8
- end
8
+ attr_accessor :data
9
9
 
10
- sig { params(_: T::Array[TerminalShop::Models::TokenAPI]).returns(T::Array[TerminalShop::Models::TokenAPI]) }
11
- def data=(_)
10
+ sig do
11
+ params(data: T::Array[T.any(TerminalShop::Models::TokenAPI, TerminalShop::Util::AnyHash)])
12
+ .returns(T.attached_class)
12
13
  end
13
-
14
- sig { params(data: T::Array[TerminalShop::Models::TokenAPI]).returns(T.attached_class) }
15
14
  def self.new(data:)
16
15
  end
17
16
 
@@ -7,7 +7,7 @@ module TerminalShop
7
7
  include TerminalShop::RequestParameters
8
8
 
9
9
  sig do
10
- params(request_options: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
10
+ params(request_options: T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
11
11
  .returns(T.attached_class)
12
12
  end
13
13
  def self.new(request_options: {})
@@ -3,18 +3,17 @@
3
3
  module TerminalShop
4
4
  module Models
5
5
  class ViewInitResponse < TerminalShop::BaseModel
6
+ # Initial app data.
6
7
  sig { returns(TerminalShop::Models::ViewInitResponse::Data) }
7
- def data
8
- end
8
+ attr_reader :data
9
+
10
+ sig { params(data: T.any(TerminalShop::Models::ViewInitResponse::Data, TerminalShop::Util::AnyHash)).void }
11
+ attr_writer :data
9
12
 
10
13
  sig do
11
- params(_: TerminalShop::Models::ViewInitResponse::Data)
12
- .returns(TerminalShop::Models::ViewInitResponse::Data)
13
- end
14
- def data=(_)
14
+ params(data: T.any(TerminalShop::Models::ViewInitResponse::Data, TerminalShop::Util::AnyHash))
15
+ .returns(T.attached_class)
15
16
  end
16
-
17
- sig { params(data: TerminalShop::Models::ViewInitResponse::Data).returns(T.attached_class) }
18
17
  def self.new(data:)
19
18
  end
20
19
 
@@ -24,100 +23,57 @@ module TerminalShop
24
23
 
25
24
  class Data < TerminalShop::BaseModel
26
25
  sig { returns(T::Array[TerminalShop::Models::AddressAPI]) }
27
- def addresses
28
- end
29
-
30
- sig { params(_: T::Array[TerminalShop::Models::AddressAPI]).returns(T::Array[TerminalShop::Models::AddressAPI]) }
31
- def addresses=(_)
32
- end
26
+ attr_accessor :addresses
33
27
 
34
28
  sig { returns(T::Array[TerminalShop::Models::AppAPI]) }
35
- def apps
36
- end
37
-
38
- sig { params(_: T::Array[TerminalShop::Models::AppAPI]).returns(T::Array[TerminalShop::Models::AppAPI]) }
39
- def apps=(_)
40
- end
29
+ attr_accessor :apps
41
30
 
42
31
  sig { returns(T::Array[TerminalShop::Models::CardAPI]) }
43
- def cards
44
- end
45
-
46
- sig { params(_: T::Array[TerminalShop::Models::CardAPI]).returns(T::Array[TerminalShop::Models::CardAPI]) }
47
- def cards=(_)
48
- end
32
+ attr_accessor :cards
49
33
 
34
+ # The current Terminal shop user's cart.
50
35
  sig { returns(TerminalShop::Models::CartAPI) }
51
- def cart
52
- end
36
+ attr_reader :cart
53
37
 
54
- sig { params(_: TerminalShop::Models::CartAPI).returns(TerminalShop::Models::CartAPI) }
55
- def cart=(_)
56
- end
38
+ sig { params(cart: T.any(TerminalShop::Models::CartAPI, TerminalShop::Util::AnyHash)).void }
39
+ attr_writer :cart
57
40
 
58
41
  sig { returns(T::Array[TerminalShop::Models::OrderAPI]) }
59
- def orders
60
- end
61
-
62
- sig { params(_: T::Array[TerminalShop::Models::OrderAPI]).returns(T::Array[TerminalShop::Models::OrderAPI]) }
63
- def orders=(_)
64
- end
42
+ attr_accessor :orders
65
43
 
66
44
  sig { returns(T::Array[TerminalShop::Models::ProductAPI]) }
67
- def products
68
- end
69
-
70
- sig { params(_: T::Array[TerminalShop::Models::ProductAPI]).returns(T::Array[TerminalShop::Models::ProductAPI]) }
71
- def products=(_)
72
- end
45
+ attr_accessor :products
73
46
 
47
+ # A Terminal shop user's profile. (We have users, btw.)
74
48
  sig { returns(TerminalShop::Models::ProfileAPI) }
75
- def profile
76
- end
49
+ attr_reader :profile
77
50
 
78
- sig { params(_: TerminalShop::Models::ProfileAPI).returns(TerminalShop::Models::ProfileAPI) }
79
- def profile=(_)
80
- end
81
-
82
- sig { returns(Symbol) }
83
- def region
84
- end
51
+ sig { params(profile: T.any(TerminalShop::Models::ProfileAPI, TerminalShop::Util::AnyHash)).void }
52
+ attr_writer :profile
85
53
 
86
- sig { params(_: Symbol).returns(Symbol) }
87
- def region=(_)
88
- end
54
+ # A Terminal shop user's region.
55
+ sig { returns(TerminalShop::Models::Region::TaggedSymbol) }
56
+ attr_accessor :region
89
57
 
90
58
  sig { returns(T::Array[TerminalShop::Models::SubscriptionAPI]) }
91
- def subscriptions
92
- end
93
-
94
- sig do
95
- params(_: T::Array[TerminalShop::Models::SubscriptionAPI])
96
- .returns(T::Array[TerminalShop::Models::SubscriptionAPI])
97
- end
98
- def subscriptions=(_)
99
- end
59
+ attr_accessor :subscriptions
100
60
 
101
61
  sig { returns(T::Array[TerminalShop::Models::TokenAPI]) }
102
- def tokens
103
- end
104
-
105
- sig { params(_: T::Array[TerminalShop::Models::TokenAPI]).returns(T::Array[TerminalShop::Models::TokenAPI]) }
106
- def tokens=(_)
107
- end
62
+ attr_accessor :tokens
108
63
 
64
+ # Initial app data.
109
65
  sig do
110
66
  params(
111
- addresses: T::Array[TerminalShop::Models::AddressAPI],
112
- apps: T::Array[TerminalShop::Models::AppAPI],
113
- cards: T::Array[TerminalShop::Models::CardAPI],
114
- cart: TerminalShop::Models::CartAPI,
115
- orders: T::Array[TerminalShop::Models::OrderAPI],
116
- products: T::Array[TerminalShop::Models::ProductAPI],
117
- profile: TerminalShop::Models::ProfileAPI,
118
- region: Symbol,
119
- subscriptions: T::Array[TerminalShop::Models::SubscriptionAPI],
120
- tokens: T::Array[TerminalShop::Models::TokenAPI]
67
+ addresses: T::Array[T.any(TerminalShop::Models::AddressAPI, TerminalShop::Util::AnyHash)],
68
+ apps: T::Array[T.any(TerminalShop::Models::AppAPI, TerminalShop::Util::AnyHash)],
69
+ cards: T::Array[T.any(TerminalShop::Models::CardAPI, TerminalShop::Util::AnyHash)],
70
+ cart: T.any(TerminalShop::Models::CartAPI, TerminalShop::Util::AnyHash),
71
+ orders: T::Array[T.any(TerminalShop::Models::OrderAPI, TerminalShop::Util::AnyHash)],
72
+ products: T::Array[T.any(TerminalShop::Models::ProductAPI, TerminalShop::Util::AnyHash)],
73
+ profile: T.any(TerminalShop::Models::ProfileAPI, TerminalShop::Util::AnyHash),
74
+ region: TerminalShop::Models::Region::OrSymbol,
75
+ subscriptions: T::Array[T.any(TerminalShop::Models::SubscriptionAPI, TerminalShop::Util::AnyHash)],
76
+ tokens: T::Array[T.any(TerminalShop::Models::TokenAPI, TerminalShop::Util::AnyHash)]
121
77
  )
122
78
  .returns(T.attached_class)
123
79
  end
@@ -135,7 +91,7 @@ module TerminalShop
135
91
  orders: T::Array[TerminalShop::Models::OrderAPI],
136
92
  products: T::Array[TerminalShop::Models::ProductAPI],
137
93
  profile: TerminalShop::Models::ProfileAPI,
138
- region: Symbol,
94
+ region: TerminalShop::Models::Region::TaggedSymbol,
139
95
  subscriptions: T::Array[TerminalShop::Models::SubscriptionAPI],
140
96
  tokens: T::Array[TerminalShop::Models::TokenAPI]
141
97
  }
@@ -1,20 +1,35 @@
1
1
  # typed: strong
2
2
 
3
3
  module TerminalShop
4
+ # @api private
4
5
  class PooledNetRequester
5
- RequestShape = T.type_alias do
6
- {method: Symbol, url: URI::Generic, headers: T::Hash[String, String], body: T.anything, deadline: Float}
7
- end
6
+ RequestShape =
7
+ T.type_alias do
8
+ {
9
+ method: Symbol,
10
+ url: URI::Generic,
11
+ headers: T::Hash[String, String],
12
+ body: T.anything,
13
+ deadline: Float
14
+ }
15
+ end
16
+
17
+ # from the golang stdlib
18
+ # https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
19
+ KEEP_ALIVE_TIMEOUT = 30
8
20
 
9
21
  class << self
22
+ # @api private
10
23
  sig { params(url: URI::Generic).returns(Net::HTTP) }
11
24
  def connect(url)
12
25
  end
13
26
 
27
+ # @api private
14
28
  sig { params(conn: Net::HTTP, deadline: Float).void }
15
29
  def calibrate_socket_timeout(conn, deadline)
16
30
  end
17
31
 
32
+ # @api private
18
33
  sig do
19
34
  params(request: TerminalShop::PooledNetRequester::RequestShape, blk: T.proc.params(arg0: String).void)
20
35
  .returns(Net::HTTPGenericRequest)
@@ -23,17 +38,20 @@ module TerminalShop
23
38
  end
24
39
  end
25
40
 
26
- sig { params(url: URI::Generic, blk: T.proc.params(arg0: Net::HTTP).void).void }
27
- private def with_pool(url, &blk)
41
+ # @api private
42
+ sig { params(url: URI::Generic, deadline: Float, blk: T.proc.params(arg0: Net::HTTP).void).void }
43
+ private def with_pool(url, deadline:, &blk)
28
44
  end
29
45
 
46
+ # @api private
30
47
  sig do
31
48
  params(request: TerminalShop::PooledNetRequester::RequestShape)
32
- .returns([Net::HTTPResponse, T::Enumerable[String]])
49
+ .returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
33
50
  end
34
51
  def execute(request)
35
52
  end
36
53
 
54
+ # @api private
37
55
  sig { params(size: Integer).returns(T.attached_class) }
38
56
  def self.new(size: Etc.nprocessors)
39
57
  end
@@ -1,87 +1,62 @@
1
1
  # typed: strong
2
2
 
3
3
  module TerminalShop
4
+ # @api private
4
5
  module RequestParameters
5
- abstract!
6
-
7
- sig { returns(T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything])) }
8
- def request_options
9
- end
10
-
11
- sig do
12
- params(_: T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
13
- .returns(T.any(TerminalShop::RequestOptions, T::Hash[Symbol, T.anything]))
14
- end
15
- def request_options=(_)
16
- end
6
+ # Options to specify HTTP behaviour for this request.
7
+ sig { returns(T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash)) }
8
+ attr_accessor :request_options
17
9
 
10
+ # @api private
18
11
  module Converter
19
- sig { params(params: T.anything).returns([T.anything, T::Hash[Symbol, T.anything]]) }
12
+ # @api private
13
+ sig { params(params: T.anything).returns([T.anything, TerminalShop::Util::AnyHash]) }
20
14
  def dump_request(params)
21
15
  end
22
16
  end
23
17
  end
24
18
 
19
+ # Specify HTTP behaviour to use for a specific request. These options supplement
20
+ # or override those provided at the client level.
21
+ #
22
+ # When making a request, you can pass an actual {RequestOptions} instance, or
23
+ # simply pass a Hash with symbol keys matching the attributes on this class.
25
24
  class RequestOptions < TerminalShop::BaseModel
25
+ # @api private
26
26
  sig { params(opts: T.any(T.self_type, T::Hash[Symbol, T.anything])).void }
27
27
  def self.validate!(opts)
28
28
  end
29
29
 
30
+ # Idempotency key to send with request and all associated retries. Will only be
31
+ # sent for write requests.
30
32
  sig { returns(T.nilable(String)) }
31
- def idempotency_key
32
- end
33
-
34
- sig { params(_: T.nilable(String)).returns(T.nilable(String)) }
35
- def idempotency_key=(_)
36
- end
33
+ attr_accessor :idempotency_key
37
34
 
35
+ # Extra query params to send with the request. These are `.merge`’d into any
36
+ # `query` given at the client level.
38
37
  sig { returns(T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))])) }
39
- def extra_query
40
- end
41
-
42
- sig do
43
- params(_: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]))
44
- .returns(T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]))
45
- end
46
- def extra_query=(_)
47
- end
38
+ attr_accessor :extra_query
48
39
 
40
+ # Extra headers to send with the request. These are `.merged`’d into any
41
+ # `extra_headers` given at the client level.
49
42
  sig { returns(T.nilable(T::Hash[String, T.nilable(String)])) }
50
- def extra_headers
51
- end
43
+ attr_accessor :extra_headers
52
44
 
53
- sig do
54
- params(_: T.nilable(T::Hash[String, T.nilable(String)]))
55
- .returns(T.nilable(T::Hash[String, T.nilable(String)]))
56
- end
57
- def extra_headers=(_)
58
- end
59
-
60
- sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
61
- def extra_body
62
- end
63
-
64
- sig { params(_: T.nilable(T::Hash[Symbol, T.anything])).returns(T.nilable(T::Hash[Symbol, T.anything])) }
65
- def extra_body=(_)
66
- end
45
+ # Extra data to send with the request. These are deep merged into any data
46
+ # generated as part of the normal request.
47
+ sig { returns(T.nilable(T.anything)) }
48
+ attr_accessor :extra_body
67
49
 
50
+ # Maximum number of retries to attempt after a failed initial request.
68
51
  sig { returns(T.nilable(Integer)) }
69
- def max_retries
70
- end
71
-
72
- sig { params(_: T.nilable(Integer)).returns(T.nilable(Integer)) }
73
- def max_retries=(_)
74
- end
52
+ attr_accessor :max_retries
75
53
 
54
+ # Request timeout in seconds.
76
55
  sig { returns(T.nilable(Float)) }
77
- def timeout
78
- end
79
-
80
- sig { params(_: T.nilable(Float)).returns(T.nilable(Float)) }
81
- def timeout=(_)
82
- end
56
+ attr_accessor :timeout
83
57
 
84
- sig { params(values: T::Hash[Symbol, T.anything]).returns(T.attached_class) }
58
+ # Returns a new instance of RequestOptions.
59
+ sig { params(values: TerminalShop::Util::AnyHash).returns(T.attached_class) }
85
60
  def self.new(values = {})
86
61
  end
87
62
  end