Class: Exa::Internal::Transport::BaseClient
- Inherits:
-
Object
- Object
- Exa::Internal::Transport::BaseClient
- Defined in:
- lib/exa/internal/transport/base_client.rb
Direct Known Subclasses
Constant Summary collapse
- PLATFORM_HEADERS =
{ "x-stainless-lang" => "ruby", "x-stainless-runtime" => RUBY_ENGINE, "x-stainless-runtime-version" => RUBY_ENGINE_VERSION }.freeze
- DEFAULT_MAX_RETRIES =
2- DEFAULT_TIMEOUT =
120.0- DEFAULT_INITIAL_RETRY_DELAY =
0.5
- DEFAULT_MAX_RETRY_DELAY =
8.0
Instance Attribute Summary collapse
-
#base_url ⇒ Object
readonly
Returns the value of attribute base_url.
-
#headers ⇒ Object
readonly
Returns the value of attribute headers.
-
#initial_retry_delay ⇒ Object
readonly
Returns the value of attribute initial_retry_delay.
-
#max_retries ⇒ Object
readonly
Returns the value of attribute max_retries.
-
#max_retry_delay ⇒ Object
readonly
Returns the value of attribute max_retry_delay.
-
#requester ⇒ Object
readonly
Returns the value of attribute requester.
-
#timeout ⇒ Object
readonly
Returns the value of attribute timeout.
Instance Method Summary collapse
-
#initialize(base_url:, timeout: DEFAULT_TIMEOUT, max_retries: DEFAULT_MAX_RETRIES, initial_retry_delay: DEFAULT_INITIAL_RETRY_DELAY, max_retry_delay: DEFAULT_MAX_RETRY_DELAY, headers: {}, requester: Exa::Internal::Transport::PooledNetRequester.new) ⇒ BaseClient
constructor
A new instance of BaseClient.
- #request(method:, path:, query: nil, headers: nil, body: nil, unwrap: nil, stream: false, response_model: nil, request_options: nil) ⇒ Object
Constructor Details
#initialize(base_url:, timeout: DEFAULT_TIMEOUT, max_retries: DEFAULT_MAX_RETRIES, initial_retry_delay: DEFAULT_INITIAL_RETRY_DELAY, max_retry_delay: DEFAULT_MAX_RETRY_DELAY, headers: {}, requester: Exa::Internal::Transport::PooledNetRequester.new) ⇒ BaseClient
Returns a new instance of BaseClient.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/exa/internal/transport/base_client.rb', line 29 def initialize( base_url:, timeout: DEFAULT_TIMEOUT, max_retries: DEFAULT_MAX_RETRIES, initial_retry_delay: DEFAULT_INITIAL_RETRY_DELAY, max_retry_delay: DEFAULT_MAX_RETRY_DELAY, headers: {}, requester: Exa::Internal::Transport::PooledNetRequester.new ) @base_url = URI(base_url) @timeout = timeout @max_retries = max_retries @initial_retry_delay = initial_retry_delay @max_retry_delay = max_retry_delay @headers = headers || {} @requester = requester end |
Instance Attribute Details
#base_url ⇒ Object (readonly)
Returns the value of attribute base_url.
27 28 29 |
# File 'lib/exa/internal/transport/base_client.rb', line 27 def base_url @base_url end |
#headers ⇒ Object (readonly)
Returns the value of attribute headers.
27 28 29 |
# File 'lib/exa/internal/transport/base_client.rb', line 27 def headers @headers end |
#initial_retry_delay ⇒ Object (readonly)
Returns the value of attribute initial_retry_delay.
27 28 29 |
# File 'lib/exa/internal/transport/base_client.rb', line 27 def initial_retry_delay @initial_retry_delay end |
#max_retries ⇒ Object (readonly)
Returns the value of attribute max_retries.
27 28 29 |
# File 'lib/exa/internal/transport/base_client.rb', line 27 def max_retries @max_retries end |
#max_retry_delay ⇒ Object (readonly)
Returns the value of attribute max_retry_delay.
27 28 29 |
# File 'lib/exa/internal/transport/base_client.rb', line 27 def max_retry_delay @max_retry_delay end |
#requester ⇒ Object (readonly)
Returns the value of attribute requester.
27 28 29 |
# File 'lib/exa/internal/transport/base_client.rb', line 27 def requester @requester end |
#timeout ⇒ Object (readonly)
Returns the value of attribute timeout.
27 28 29 |
# File 'lib/exa/internal/transport/base_client.rb', line 27 def timeout @timeout end |
Instance Method Details
#request(method:, path:, query: nil, headers: nil, body: nil, unwrap: nil, stream: false, response_model: nil, request_options: nil) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/exa/internal/transport/base_client.rb', line 47 def request(method:, path:, query: nil, headers: nil, body: nil, unwrap: nil, stream: false, response_model: nil, request_options: nil) = () req = build_request( method: method, path: Array(path).join("/"), query: query, headers: headers, body: body, request_timeout: [:timeout], idempotency_key: [:idempotency_key] ) _, response, stream_enum = send_request(req, max_retries: [:max_retries] || max_retries) parsed_headers = Exa::Internal::Util.normalized_headers(response.each_header.to_h) if stream Exa::Internal::Transport::Stream.new(headers: parsed_headers, stream: stream_enum) else decoded = Exa::Internal::Util.decode_content(parsed_headers, stream: stream_enum) coerced = coerce_response(response_model, decoded) unwrap ? dig(coerced, unwrap) : coerced end end |