class Turbopuffer::Internal::Transport::BaseClient

def build_request(req, opts)

Returns:
  • (Hash{Symbol=>Object}) -

Options Hash: (**opts)
  • :timeout (Float, nil) --
  • :max_retries (Integer, nil) --
  • :extra_body (Object, nil) --
  • :extra_headers (Hash{String=>String, nil}, nil) --
  • :extra_query (Hash{String=>Array, String, nil}, nil) --
  • :idempotency_key (String, nil) --
  • :model (Turbopuffer::Internal::Type::Converter, Class, nil) --
  • :stream (Class, nil) --
  • :page (Class, nil) --
  • :unwrap (Symbol, Integer, Array, Proc, nil) --
  • :body (Object, nil) --
  • :headers (Hash{String=>String, Integer, Array, nil}, nil) --
  • :query (Hash{String=>Array, String, nil}, nil) --
  • :path (String, Array) --
  • :method (Symbol) --

Parameters:
  • opts (Hash{Symbol=>Object}) -- .
  • req (Hash{Symbol=>Object}) -- .

Other tags:
    Api: - private
def build_request(req, opts)
, uninterpolated_path = req.fetch_values(:method, :path)
 Turbopuffer::Internal::Util.interpolate_path(uninterpolated_path)
= Turbopuffer::Internal::Util.deep_merge(req[:query].to_h, opts[:extra_query].to_h)
s = Turbopuffer::Internal::Util.normalized_headers(
ders,
_headers,
:headers].to_h,
[:extra_headers].to_h
empotency_header &&
aders.key?(@idempotency_header) &&
et::HTTP::IDEMPOTENT_METHODS_.include?(method.to_s.upcase) || opts.key?(:idempotency_key))
ers[@idempotency_header] = opts.fetch(:idempotency_key) { generate_idempotency_key }
 headers.key?("x-stainless-retry-count")
ers["x-stainless-retry-count"] = "0"
t = opts.fetch(:timeout, @timeout).to_f.clamp(0..)
 headers.key?("x-stainless-timeout") || timeout.zero?
ers["x-stainless-timeout"] = timeout.to_s
s.reject! { |_, v| v.to_s.empty? }

 method
get | :head | :options | :trace
l

rbopuffer::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
Turbopuffer::Internal::Util.join_parsed_uri(
e_url_components,
eq, path: path, query: query}
s, encoded = Turbopuffer::Internal::Util.encode_content(headers, body)
od: method,
 url,
ers: headers,
: encoded,
retries: opts.fetch(:max_retries, @max_retries),
out: timeout