terminal-shop 2.0.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 (177) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -8
  3. data/lib/terminal-shop/client.rb +1 -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_get_params.rb +1 -1
  28. data/lib/terminal-shop/models/product_list_params.rb +1 -1
  29. data/lib/terminal-shop/models/profile_me_params.rb +1 -1
  30. data/lib/terminal-shop/models/profile_update_params.rb +1 -1
  31. data/lib/terminal-shop/models/subscription_create_params.rb +1 -1
  32. data/lib/terminal-shop/models/subscription_delete_params.rb +1 -1
  33. data/lib/terminal-shop/models/subscription_get_params.rb +1 -1
  34. data/lib/terminal-shop/models/subscription_list_params.rb +1 -1
  35. data/lib/terminal-shop/models/token_create_params.rb +1 -1
  36. data/lib/terminal-shop/models/token_delete_params.rb +1 -1
  37. data/lib/terminal-shop/models/token_get_params.rb +1 -1
  38. data/lib/terminal-shop/models/token_list_params.rb +1 -1
  39. data/lib/terminal-shop/models/view_init_params.rb +1 -1
  40. data/lib/terminal-shop/request_options.rb +0 -33
  41. data/lib/terminal-shop/transport/base_client.rb +459 -0
  42. data/lib/terminal-shop/transport/pooled_net_requester.rb +182 -0
  43. data/lib/terminal-shop/type/array_of.rb +110 -0
  44. data/lib/terminal-shop/type/base_model.rb +362 -0
  45. data/lib/terminal-shop/type/base_page.rb +61 -0
  46. data/lib/terminal-shop/type/boolean_model.rb +52 -0
  47. data/lib/terminal-shop/type/converter.rb +217 -0
  48. data/lib/terminal-shop/type/enum.rb +101 -0
  49. data/lib/terminal-shop/type/hash_of.rb +136 -0
  50. data/lib/terminal-shop/type/request_parameters.rb +38 -0
  51. data/lib/terminal-shop/type/union.rb +183 -0
  52. data/lib/terminal-shop/type/unknown.rb +56 -0
  53. data/lib/terminal-shop/type.rb +23 -0
  54. data/lib/terminal-shop/util.rb +3 -5
  55. data/lib/terminal-shop/version.rb +1 -1
  56. data/lib/terminal-shop.rb +14 -6
  57. data/rbi/lib/terminal-shop/client.rbi +1 -1
  58. data/rbi/lib/terminal-shop/models/address_create_params.rbi +12 -2
  59. data/rbi/lib/terminal-shop/models/address_delete_params.rbi +1 -1
  60. data/rbi/lib/terminal-shop/models/address_get_params.rbi +1 -1
  61. data/rbi/lib/terminal-shop/models/address_list_params.rbi +1 -1
  62. data/rbi/lib/terminal-shop/models/app_create_params.rbi +1 -1
  63. data/rbi/lib/terminal-shop/models/app_delete_params.rbi +1 -1
  64. data/rbi/lib/terminal-shop/models/app_get_params.rbi +1 -1
  65. data/rbi/lib/terminal-shop/models/app_list_params.rbi +1 -1
  66. data/rbi/lib/terminal-shop/models/card_collect_params.rbi +1 -1
  67. data/rbi/lib/terminal-shop/models/card_create_params.rbi +1 -1
  68. data/rbi/lib/terminal-shop/models/card_delete_params.rbi +1 -1
  69. data/rbi/lib/terminal-shop/models/card_get_params.rbi +1 -1
  70. data/rbi/lib/terminal-shop/models/card_list_params.rbi +1 -1
  71. data/rbi/lib/terminal-shop/models/cart_clear_params.rbi +1 -1
  72. data/rbi/lib/terminal-shop/models/cart_convert_params.rbi +1 -1
  73. data/rbi/lib/terminal-shop/models/cart_get_params.rbi +1 -1
  74. data/rbi/lib/terminal-shop/models/cart_set_address_params.rbi +1 -1
  75. data/rbi/lib/terminal-shop/models/cart_set_card_params.rbi +1 -1
  76. data/rbi/lib/terminal-shop/models/cart_set_item_params.rbi +1 -1
  77. data/rbi/lib/terminal-shop/models/email_create_params.rbi +1 -1
  78. data/rbi/lib/terminal-shop/models/order_create_params.rbi +1 -1
  79. data/rbi/lib/terminal-shop/models/order_get_params.rbi +1 -1
  80. data/rbi/lib/terminal-shop/models/order_list_params.rbi +1 -1
  81. data/rbi/lib/terminal-shop/models/product_get_params.rbi +1 -1
  82. data/rbi/lib/terminal-shop/models/product_list_params.rbi +1 -1
  83. data/rbi/lib/terminal-shop/models/profile_me_params.rbi +1 -1
  84. data/rbi/lib/terminal-shop/models/profile_update_params.rbi +1 -1
  85. data/rbi/lib/terminal-shop/models/subscription_create_params.rbi +1 -1
  86. data/rbi/lib/terminal-shop/models/subscription_delete_params.rbi +1 -1
  87. data/rbi/lib/terminal-shop/models/subscription_get_params.rbi +1 -1
  88. data/rbi/lib/terminal-shop/models/subscription_list_params.rbi +1 -1
  89. data/rbi/lib/terminal-shop/models/token_create_params.rbi +1 -1
  90. data/rbi/lib/terminal-shop/models/token_delete_params.rbi +1 -1
  91. data/rbi/lib/terminal-shop/models/token_get_params.rbi +1 -1
  92. data/rbi/lib/terminal-shop/models/token_list_params.rbi +1 -1
  93. data/rbi/lib/terminal-shop/models/view_init_params.rbi +1 -1
  94. data/rbi/lib/terminal-shop/models/view_init_response.rbi +12 -1
  95. data/rbi/lib/terminal-shop/request_options.rbi +0 -15
  96. data/rbi/lib/terminal-shop/transport/base_client.rbi +208 -0
  97. data/rbi/lib/terminal-shop/transport/pooled_net_requester.rbi +64 -0
  98. data/rbi/lib/terminal-shop/type/array_of.rbi +82 -0
  99. data/rbi/lib/terminal-shop/type/base_model.rbi +194 -0
  100. data/rbi/lib/terminal-shop/type/base_page.rbi +38 -0
  101. data/rbi/lib/terminal-shop/type/boolean_model.rbi +41 -0
  102. data/rbi/lib/terminal-shop/type/converter.rbi +101 -0
  103. data/rbi/lib/terminal-shop/type/enum.rbi +58 -0
  104. data/rbi/lib/terminal-shop/type/hash_of.rbi +85 -0
  105. data/rbi/lib/terminal-shop/type/request_parameters.rbi +20 -0
  106. data/rbi/lib/terminal-shop/type/union.rbi +68 -0
  107. data/rbi/lib/terminal-shop/type/unknown.rbi +37 -0
  108. data/rbi/lib/terminal-shop/type.rbi +23 -0
  109. data/rbi/lib/terminal-shop/version.rbi +1 -1
  110. data/sig/terminal-shop/client.rbs +1 -1
  111. data/sig/terminal-shop/models/address_create_params.rbs +1 -1
  112. data/sig/terminal-shop/models/address_delete_params.rbs +1 -1
  113. data/sig/terminal-shop/models/address_get_params.rbs +1 -1
  114. data/sig/terminal-shop/models/address_list_params.rbs +1 -1
  115. data/sig/terminal-shop/models/app_create_params.rbs +1 -1
  116. data/sig/terminal-shop/models/app_delete_params.rbs +1 -1
  117. data/sig/terminal-shop/models/app_get_params.rbs +1 -1
  118. data/sig/terminal-shop/models/app_list_params.rbs +1 -1
  119. data/sig/terminal-shop/models/card_collect_params.rbs +1 -1
  120. data/sig/terminal-shop/models/card_create_params.rbs +1 -1
  121. data/sig/terminal-shop/models/card_delete_params.rbs +1 -1
  122. data/sig/terminal-shop/models/card_get_params.rbs +1 -1
  123. data/sig/terminal-shop/models/card_list_params.rbs +1 -1
  124. data/sig/terminal-shop/models/cart_clear_params.rbs +1 -1
  125. data/sig/terminal-shop/models/cart_convert_params.rbs +1 -1
  126. data/sig/terminal-shop/models/cart_get_params.rbs +1 -1
  127. data/sig/terminal-shop/models/cart_set_address_params.rbs +1 -1
  128. data/sig/terminal-shop/models/cart_set_card_params.rbs +1 -1
  129. data/sig/terminal-shop/models/cart_set_item_params.rbs +1 -1
  130. data/sig/terminal-shop/models/email_create_params.rbs +1 -1
  131. data/sig/terminal-shop/models/order_create_params.rbs +1 -1
  132. data/sig/terminal-shop/models/order_get_params.rbs +1 -1
  133. data/sig/terminal-shop/models/order_list_params.rbs +1 -1
  134. data/sig/terminal-shop/models/product_get_params.rbs +1 -1
  135. data/sig/terminal-shop/models/product_list_params.rbs +1 -1
  136. data/sig/terminal-shop/models/profile_me_params.rbs +1 -1
  137. data/sig/terminal-shop/models/profile_update_params.rbs +1 -1
  138. data/sig/terminal-shop/models/subscription_create_params.rbs +1 -1
  139. data/sig/terminal-shop/models/subscription_delete_params.rbs +1 -1
  140. data/sig/terminal-shop/models/subscription_get_params.rbs +1 -1
  141. data/sig/terminal-shop/models/subscription_list_params.rbs +1 -1
  142. data/sig/terminal-shop/models/token_create_params.rbs +1 -1
  143. data/sig/terminal-shop/models/token_delete_params.rbs +1 -1
  144. data/sig/terminal-shop/models/token_get_params.rbs +1 -1
  145. data/sig/terminal-shop/models/token_list_params.rbs +1 -1
  146. data/sig/terminal-shop/models/view_init_params.rbs +1 -1
  147. data/sig/terminal-shop/request_options.rbs +0 -10
  148. data/sig/terminal-shop/transport/base_client.rbs +110 -0
  149. data/sig/terminal-shop/transport/pooled_net_requester.rbs +39 -0
  150. data/sig/terminal-shop/type/array_of.rbs +36 -0
  151. data/sig/terminal-shop/type/base_model.rbs +73 -0
  152. data/sig/terminal-shop/type/base_page.rbs +22 -0
  153. data/sig/terminal-shop/type/boolean_model.rbs +18 -0
  154. data/sig/terminal-shop/type/converter.rbs +42 -0
  155. data/sig/terminal-shop/type/enum.rbs +22 -0
  156. data/sig/terminal-shop/type/hash_of.rbs +36 -0
  157. data/sig/terminal-shop/type/request_parameters.rbs +13 -0
  158. data/sig/terminal-shop/type/union.rbs +40 -0
  159. data/sig/terminal-shop/type/unknown.rbs +18 -0
  160. data/sig/terminal-shop/type.rbs +22 -0
  161. data/sig/terminal-shop/version.rbs +1 -1
  162. metadata +41 -17
  163. data/lib/terminal-shop/base_client.rb +0 -457
  164. data/lib/terminal-shop/base_model.rb +0 -1201
  165. data/lib/terminal-shop/base_page.rb +0 -59
  166. data/lib/terminal-shop/extern.rb +0 -7
  167. data/lib/terminal-shop/pooled_net_requester.rb +0 -180
  168. data/rbi/lib/terminal-shop/base_client.rbi +0 -197
  169. data/rbi/lib/terminal-shop/base_model.rbi +0 -645
  170. data/rbi/lib/terminal-shop/base_page.rbi +0 -36
  171. data/rbi/lib/terminal-shop/extern.rbi +0 -7
  172. data/rbi/lib/terminal-shop/pooled_net_requester.rbi +0 -59
  173. data/sig/terminal-shop/base_client.rbs +0 -108
  174. data/sig/terminal-shop/base_model.rbs +0 -262
  175. data/sig/terminal-shop/base_page.rbs +0 -20
  176. data/sig/terminal-shop/extern.rbs +0 -4
  177. data/sig/terminal-shop/pooled_net_requester.rbs +0 -37
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TerminalShop
4
- # @example
5
- # if page.has_next?
6
- # page = page.next_page
7
- # end
8
- #
9
- # @example
10
- # page.auto_paging_each do |product|
11
- # puts(product)
12
- # end
13
- #
14
- # @example
15
- # products =
16
- # page
17
- # .to_enum
18
- # .lazy
19
- # .select { _1.object_id.even? }
20
- # .map(&:itself)
21
- # .take(2)
22
- # .to_a
23
- #
24
- # products => Array
25
- module BasePage
26
- # rubocop:disable Lint/UnusedMethodArgument
27
-
28
- # @return [Boolean]
29
- def next_page? = (raise NotImplementedError)
30
-
31
- # @raise [TerminalShop::APIError]
32
- # @return [TerminalShop::BasePage]
33
- def next_page = (raise NotImplementedError)
34
-
35
- # @param blk [Proc]
36
- #
37
- # @return [void]
38
- def auto_paging_each(&) = (raise NotImplementedError)
39
-
40
- # @return [Enumerable]
41
- def to_enum = super(:auto_paging_each)
42
-
43
- alias_method :enum_for, :to_enum
44
-
45
- # @api private
46
- #
47
- # @param client [TerminalShop::BaseClient]
48
- # @param req [Hash{Symbol=>Object}]
49
- # @param headers [Hash{String=>String}, Net::HTTPHeader]
50
- # @param page_data [Object]
51
- def initialize(client:, req:, headers:, page_data:)
52
- @client = client
53
- @req = req
54
- super()
55
- end
56
-
57
- # rubocop:enable Lint/UnusedMethodArgument
58
- end
59
- 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,180 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module TerminalShop
4
- # @api private
5
- class PooledNetRequester
6
- # from the golang stdlib
7
- # https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
8
- KEEP_ALIVE_TIMEOUT = 30
9
-
10
- class << self
11
- # @api private
12
- #
13
- # @param url [URI::Generic]
14
- #
15
- # @return [Net::HTTP]
16
- def connect(url)
17
- port =
18
- case [url.port, url.scheme]
19
- in [Integer, _]
20
- url.port
21
- in [nil, "http" | "ws"]
22
- Net::HTTP.http_default_port
23
- in [nil, "https" | "wss"]
24
- Net::HTTP.https_default_port
25
- end
26
-
27
- Net::HTTP.new(url.host, port).tap do
28
- _1.use_ssl = %w[https wss].include?(url.scheme)
29
- _1.max_retries = 0
30
- end
31
- end
32
-
33
- # @api private
34
- #
35
- # @param conn [Net::HTTP]
36
- # @param deadline [Float]
37
- def calibrate_socket_timeout(conn, deadline)
38
- timeout = deadline - TerminalShop::Util.monotonic_secs
39
- conn.open_timeout = conn.read_timeout = conn.write_timeout = conn.continue_timeout = timeout
40
- end
41
-
42
- # @api private
43
- #
44
- # @param request [Hash{Symbol=>Object}] .
45
- #
46
- # @option request [Symbol] :method
47
- #
48
- # @option request [URI::Generic] :url
49
- #
50
- # @option request [Hash{String=>String}] :headers
51
- #
52
- # @param blk [Proc]
53
- #
54
- # @yieldparam [String]
55
- # @return [Net::HTTPGenericRequest]
56
- def build_request(request, &)
57
- method, url, headers, body = request.fetch_values(:method, :url, :headers, :body)
58
- req = Net::HTTPGenericRequest.new(
59
- method.to_s.upcase,
60
- !body.nil?,
61
- method != :head,
62
- url.to_s
63
- )
64
-
65
- headers.each { req[_1] = _2 }
66
-
67
- case body
68
- in nil
69
- nil
70
- in String
71
- req["content-length"] ||= body.bytesize.to_s unless req["transfer-encoding"]
72
- req.body_stream = TerminalShop::Util::ReadIOAdapter.new(body, &)
73
- in StringIO
74
- req["content-length"] ||= body.size.to_s unless req["transfer-encoding"]
75
- req.body_stream = TerminalShop::Util::ReadIOAdapter.new(body, &)
76
- in IO | Enumerator
77
- req["transfer-encoding"] ||= "chunked" unless req["content-length"]
78
- req.body_stream = TerminalShop::Util::ReadIOAdapter.new(body, &)
79
- end
80
-
81
- req
82
- end
83
- end
84
-
85
- # @api private
86
- #
87
- # @param url [URI::Generic]
88
- # @param deadline [Float]
89
- # @param blk [Proc]
90
- #
91
- # @raise [Timeout::Error]
92
- # @yieldparam [Net::HTTP]
93
- private def with_pool(url, deadline:, &blk)
94
- origin = TerminalShop::Util.uri_origin(url)
95
- timeout = deadline - TerminalShop::Util.monotonic_secs
96
- pool =
97
- @mutex.synchronize do
98
- @pools[origin] ||= ConnectionPool.new(size: @size) do
99
- self.class.connect(url)
100
- end
101
- end
102
-
103
- pool.with(timeout: timeout, &blk)
104
- end
105
-
106
- # @api private
107
- #
108
- # @param request [Hash{Symbol=>Object}] .
109
- #
110
- # @option request [Symbol] :method
111
- #
112
- # @option request [URI::Generic] :url
113
- #
114
- # @option request [Hash{String=>String}] :headers
115
- #
116
- # @option request [Object] :body
117
- #
118
- # @option request [Float] :deadline
119
- #
120
- # @return [Array(Integer, Net::HTTPResponse, Enumerable)]
121
- def execute(request)
122
- url, deadline = request.fetch_values(:url, :deadline)
123
-
124
- eof = false
125
- finished = false
126
- enum = Enumerator.new do |y|
127
- with_pool(url, deadline: deadline) do |conn|
128
- next if finished
129
-
130
- req = self.class.build_request(request) do
131
- self.class.calibrate_socket_timeout(conn, deadline)
132
- end
133
-
134
- self.class.calibrate_socket_timeout(conn, deadline)
135
- unless conn.started?
136
- conn.keep_alive_timeout = self.class::KEEP_ALIVE_TIMEOUT
137
- conn.start
138
- end
139
-
140
- self.class.calibrate_socket_timeout(conn, deadline)
141
- conn.request(req) do |rsp|
142
- y << [conn, req, rsp]
143
- break if finished
144
-
145
- rsp.read_body do |bytes|
146
- y << bytes
147
- break if finished
148
-
149
- self.class.calibrate_socket_timeout(conn, deadline)
150
- end
151
- eof = true
152
- end
153
- end
154
- rescue Timeout::Error
155
- raise TerminalShop::APITimeoutError
156
- end
157
-
158
- conn, _, response = enum.next
159
- body = TerminalShop::Util.fused_enum(enum, external: true) do
160
- finished = true
161
- tap do
162
- enum.next
163
- rescue StopIteration
164
- nil
165
- end
166
- conn.finish if !eof && conn&.started?
167
- end
168
- [Integer(response.code), response, (response.body = body)]
169
- end
170
-
171
- # @api private
172
- #
173
- # @param size [Integer]
174
- def initialize(size: Etc.nprocessors)
175
- @mutex = Mutex.new
176
- @size = size
177
- @pools = {}
178
- end
179
- end
180
- end
@@ -1,197 +0,0 @@
1
- # typed: strong
2
-
3
- module TerminalShop
4
- # @api private
5
- class BaseClient
6
- abstract!
7
-
8
- RequestComponentsShape =
9
- T.type_alias do
10
- {
11
- method: Symbol,
12
- path: T.any(String, T::Array[String]),
13
- query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
14
- headers: T.nilable(
15
- T::Hash[String,
16
- T.nilable(
17
- T.any(
18
- String,
19
- Integer,
20
- T::Array[T.nilable(T.any(String, Integer))]
21
- )
22
- )]
23
- ),
24
- body: T.nilable(T.anything),
25
- unwrap: T.nilable(Symbol),
26
- page: T.nilable(T::Class[TerminalShop::BasePage[TerminalShop::BaseModel]]),
27
- stream: T.nilable(T::Class[T.anything]),
28
- model: T.nilable(TerminalShop::Converter::Input),
29
- options: T.nilable(T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
30
- }
31
- end
32
-
33
- RequestInputShape =
34
- T.type_alias do
35
- {
36
- method: Symbol,
37
- url: URI::Generic,
38
- headers: T::Hash[String, String],
39
- body: T.anything,
40
- max_retries: Integer,
41
- timeout: Float
42
- }
43
- end
44
-
45
- # from whatwg fetch spec
46
- MAX_REDIRECTS = 20
47
-
48
- PLATFORM_HEADERS = T::Hash[String, String]
49
-
50
- class << self
51
- # @api private
52
- sig { params(req: TerminalShop::BaseClient::RequestComponentsShape).void }
53
- def validate!(req)
54
- end
55
-
56
- # @api private
57
- sig do
58
- params(status: Integer, headers: T.any(T::Hash[String, String], Net::HTTPHeader)).returns(T::Boolean)
59
- end
60
- def should_retry?(status, headers:)
61
- end
62
-
63
- # @api private
64
- sig do
65
- params(
66
- request: TerminalShop::BaseClient::RequestInputShape,
67
- status: Integer,
68
- response_headers: T.any(T::Hash[String, String], Net::HTTPHeader)
69
- )
70
- .returns(TerminalShop::BaseClient::RequestInputShape)
71
- end
72
- def follow_redirect(request, status:, response_headers:)
73
- end
74
-
75
- # @api private
76
- sig do
77
- params(
78
- status: T.any(Integer, TerminalShop::APIConnectionError),
79
- stream: T.nilable(T::Enumerable[String])
80
- )
81
- .void
82
- end
83
- def reap_connection!(status, stream:)
84
- end
85
- end
86
-
87
- # @api private
88
- sig { returns(T.anything) }
89
- attr_accessor :requester
90
-
91
- # @api private
92
- sig do
93
- params(
94
- base_url: String,
95
- timeout: Float,
96
- max_retries: Integer,
97
- initial_retry_delay: Float,
98
- max_retry_delay: Float,
99
- headers: T::Hash[String,
100
- T.nilable(T.any(String, Integer, T::Array[T.nilable(T.any(String, Integer))]))],
101
- idempotency_header: T.nilable(String)
102
- )
103
- .returns(T.attached_class)
104
- end
105
- def self.new(
106
- base_url:,
107
- timeout: 0.0,
108
- max_retries: 0,
109
- initial_retry_delay: 0.0,
110
- max_retry_delay: 0.0,
111
- headers: {},
112
- idempotency_header: nil
113
- )
114
- end
115
-
116
- # @api private
117
- sig { overridable.returns(T::Hash[String, String]) }
118
- private def auth_headers
119
- end
120
-
121
- # @api private
122
- sig { returns(String) }
123
- private def generate_idempotency_key
124
- end
125
-
126
- # @api private
127
- sig do
128
- overridable
129
- .params(req: TerminalShop::BaseClient::RequestComponentsShape, opts: TerminalShop::Util::AnyHash)
130
- .returns(TerminalShop::BaseClient::RequestInputShape)
131
- end
132
- private def build_request(req, opts)
133
- end
134
-
135
- # @api private
136
- sig { params(headers: T::Hash[String, String], retry_count: Integer).returns(Float) }
137
- private def retry_delay(headers, retry_count:)
138
- end
139
-
140
- # @api private
141
- sig do
142
- params(
143
- request: TerminalShop::BaseClient::RequestInputShape,
144
- redirect_count: Integer,
145
- retry_count: Integer,
146
- send_retry_header: T::Boolean
147
- )
148
- .returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
149
- end
150
- private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
151
- end
152
-
153
- # Execute the request specified by `req`. This is the method that all resource
154
- # methods call into.
155
- sig do
156
- params(
157
- method: Symbol,
158
- path: T.any(String, T::Array[String]),
159
- query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
160
- headers: T.nilable(
161
- T::Hash[String,
162
- T.nilable(
163
- T.any(
164
- String,
165
- Integer,
166
- T::Array[T.nilable(T.any(String, Integer))]
167
- )
168
- )]
169
- ),
170
- body: T.nilable(T.anything),
171
- unwrap: T.nilable(Symbol),
172
- page: T.nilable(T::Class[TerminalShop::BasePage[TerminalShop::BaseModel]]),
173
- stream: T.nilable(T::Class[T.anything]),
174
- model: T.nilable(TerminalShop::Converter::Input),
175
- options: T.nilable(T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
176
- )
177
- .returns(T.anything)
178
- end
179
- def request(
180
- method,
181
- path,
182
- query: {},
183
- headers: {},
184
- body: nil,
185
- unwrap: nil,
186
- page: nil,
187
- stream: nil,
188
- model: TerminalShop::Unknown,
189
- options: {}
190
- )
191
- end
192
-
193
- sig { returns(String) }
194
- def inspect
195
- end
196
- end
197
- end