Skip to content

Commit 1d53fee

Browse files
feat: expose base client options as read only attributes
1 parent d3c5587 commit 1d53fee

File tree

3 files changed

+65
-5
lines changed

3 files changed

+65
-5
lines changed

lib/openai/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 [OpenAI::Internal::Transport::PooledNetRequester]
158179
attr_reader :requester
@@ -184,10 +205,11 @@ def initialize(
184205
},
185206
headers
186207
)
187-
@base_url = OpenAI::Internal::Util.parse_uri(base_url)
208+
@base_url_components = OpenAI::Internal::Util.parse_uri(base_url)
209+
@base_url = OpenAI::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
OpenAI::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
279301
end
280302

303+
url = OpenAI::Internal::Util.join_parsed_uri(
304+
@base_url_components,
305+
{**req, path: path, query: query}
306+
)
281307
headers, encoded = OpenAI::Internal::Util.encode_content(headers, body)
282308
{
283309
method: method,
284-
url: OpenAI::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 = OpenAI::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/openai/internal/transport/base_client.rbi

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,27 @@ module OpenAI
122122
end
123123
end
124124

125+
sig { returns(URI::Generic) }
126+
attr_reader :base_url
127+
128+
sig { returns(Float) }
129+
attr_reader :timeout
130+
131+
sig { returns(Integer) }
132+
attr_reader :max_retries
133+
134+
sig { returns(Float) }
135+
attr_reader :initial_retry_delay
136+
137+
sig { returns(Float) }
138+
attr_reader :max_retry_delay
139+
140+
sig { returns(T::Hash[String, String]) }
141+
attr_reader :headers
142+
143+
sig { returns(T.nilable(String)) }
144+
attr_reader :idempotency_header
145+
125146
# @api private
126147
sig { returns(OpenAI::Internal::Transport::PooledNetRequester) }
127148
attr_reader :requester

sig/openai/internal/transport/base_client.rbs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,20 @@ module OpenAI
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: OpenAI::Internal::Transport::PooledNetRequester
6175

0 commit comments

Comments
 (0)