Skip to content

Commit 289fb00

Browse files
feat: expose base client options as read only attributes
1 parent 03335a6 commit 289fb00

File tree

3 files changed

+65
-5
lines changed

3 files changed

+65
-5
lines changed

lib/finch_api/internal/transport/base_client.rb

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,27 @@ def reap_connection!(status, stream:)
153153
end
154154
end
155155

156+
# @return [URI::Generic]
157+
attr_reader :base_url
158+
159+
# @return [Float]
160+
attr_reader :timeout
161+
162+
# @return [Integer]
163+
attr_reader :max_retries
164+
165+
# @return [Float]
166+
attr_reader :initial_retry_delay
167+
168+
# @return [Float]
169+
attr_reader :max_retry_delay
170+
171+
# @return [Hash{String=>String}]
172+
attr_reader :headers
173+
174+
# @return [String, nil]
175+
attr_reader :idempotency_header
176+
156177
# @api private
157178
# @return [FinchAPI::Internal::Transport::PooledNetRequester]
158179
attr_reader :requester
@@ -184,10 +205,11 @@ def initialize(
184205
},
185206
headers
186207
)
187-
@base_url = FinchAPI::Internal::Util.parse_uri(base_url)
208+
@base_url_components = FinchAPI::Internal::Util.parse_uri(base_url)
209+
@base_url = FinchAPI::Internal::Util.unparse_uri(@base_url_components)
188210
@idempotency_header = idempotency_header&.to_s&.downcase
189-
@max_retries = max_retries
190211
@timeout = timeout
212+
@max_retries = max_retries
191213
@initial_retry_delay = initial_retry_delay
192214
@max_retry_delay = max_retry_delay
193215
end
@@ -278,10 +300,14 @@ def initialize(
278300
FinchAPI::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
279301
end
280302

303+
url = FinchAPI::Internal::Util.join_parsed_uri(
304+
@base_url_components,
305+
{**req, path: path, query: query}
306+
)
281307
headers, encoded = FinchAPI::Internal::Util.encode_content(headers, body)
282308
{
283309
method: method,
284-
url: FinchAPI::Internal::Util.join_parsed_uri(@base_url, {**req, path: path, query: query}),
310+
url: url,
285311
headers: headers,
286312
body: encoded,
287313
max_retries: opts.fetch(:max_retries, @max_retries),
@@ -475,8 +501,7 @@ def request(req)
475501
# @return [String]
476502
def inspect
477503
# rubocop:disable Layout/LineLength
478-
base_url = FinchAPI::Internal::Util.unparse_uri(@base_url)
479-
"#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
504+
"#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{@base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
480505
# rubocop:enable Layout/LineLength
481506
end
482507

rbi/finch_api/internal/transport/base_client.rbi

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,27 @@ module FinchAPI
114114
end
115115
end
116116

117+
sig { returns(URI::Generic) }
118+
attr_reader :base_url
119+
120+
sig { returns(Float) }
121+
attr_reader :timeout
122+
123+
sig { returns(Integer) }
124+
attr_reader :max_retries
125+
126+
sig { returns(Float) }
127+
attr_reader :initial_retry_delay
128+
129+
sig { returns(Float) }
130+
attr_reader :max_retry_delay
131+
132+
sig { returns(T::Hash[String, String]) }
133+
attr_reader :headers
134+
135+
sig { returns(T.nilable(String)) }
136+
attr_reader :idempotency_header
137+
117138
# @api private
118139
sig { returns(FinchAPI::Internal::Transport::PooledNetRequester) }
119140
attr_reader :requester

sig/finch_api/internal/transport/base_client.rbs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,20 @@ module FinchAPI
5656
stream: Enumerable[String]?
5757
) -> void
5858

59+
attr_reader base_url: URI::Generic
60+
61+
attr_reader timeout: Float
62+
63+
attr_reader max_retries: Integer
64+
65+
attr_reader initial_retry_delay: Float
66+
67+
attr_reader max_retry_delay: Float
68+
69+
attr_reader headers: ::Hash[String, String]
70+
71+
attr_reader idempotency_header: String?
72+
5973
# @api private
6074
attr_reader requester: FinchAPI::Internal::Transport::PooledNetRequester
6175

0 commit comments

Comments
 (0)