rbi/lib/anthropic/internal/transport/base_client.rbi (170 lines of code) (raw):
# typed: strong
module Anthropic
module Internal
module Transport
# @api private
class BaseClient
abstract!
RequestComponentsShape =
T.type_alias do
{
method: Symbol,
path: T.any(String, T::Array[String]),
query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
headers: T.nilable(
T::Hash[String,
T.nilable(
T.any(
String,
Integer,
T::Array[T.nilable(T.any(String, Integer))]
)
)]
),
body: T.nilable(T.anything),
unwrap: T.nilable(Symbol),
page: T.nilable(T::Class[Anthropic::Internal::Type::BasePage[Anthropic::Internal::Type::BaseModel]]),
stream: T.nilable(
T::Class[Anthropic::Internal::Type::BaseStream[T.anything,
Anthropic::Internal::Type::BaseModel]]
),
model: T.nilable(Anthropic::Internal::Type::Converter::Input),
options: T.nilable(T.any(Anthropic::RequestOptions, Anthropic::Internal::AnyHash))
}
end
RequestInputShape =
T.type_alias do
{
method: Symbol,
url: URI::Generic,
headers: T::Hash[String, String],
body: T.anything,
max_retries: Integer,
timeout: Float
}
end
# from whatwg fetch spec
MAX_REDIRECTS = 20
PLATFORM_HEADERS = T::Hash[String, String]
class << self
# @api private
sig { params(req: Anthropic::Internal::Transport::BaseClient::RequestComponentsShape).void }
def validate!(req); end
# @api private
sig do
params(
status: Integer,
headers: T.any(
T::Hash[String, String],
Net::HTTPHeader
)
).returns(T::Boolean)
end
def should_retry?(status, headers:); end
# @api private
sig do
params(
request: Anthropic::Internal::Transport::BaseClient::RequestInputShape,
status: Integer,
response_headers: T.any(T::Hash[String, String], Net::HTTPHeader)
)
.returns(Anthropic::Internal::Transport::BaseClient::RequestInputShape)
end
def follow_redirect(request, status:, response_headers:); end
# @api private
sig do
params(
status: T.any(Integer, Anthropic::Errors::APIConnectionError),
stream: T.nilable(T::Enumerable[String])
)
.void
end
def reap_connection!(status, stream:); end
end
# @api private
sig { returns(Anthropic::Internal::Transport::PooledNetRequester) }
attr_accessor :requester
# @api private
sig do
params(
base_url: String,
timeout: Float,
max_retries: Integer,
initial_retry_delay: Float,
max_retry_delay: Float,
headers: T::Hash[String,
T.nilable(T.any(String, Integer, T::Array[T.nilable(T.any(String, Integer))]))],
idempotency_header: T.nilable(String)
)
.returns(T.attached_class)
end
def self.new(
base_url:,
timeout: 0.0,
max_retries: 0,
initial_retry_delay: 0.0,
max_retry_delay: 0.0,
headers: {},
idempotency_header: nil
); end
# @api private
sig { overridable.returns(T::Hash[String, String]) }
private def auth_headers; end
# @api private
sig { returns(String) }
private def generate_idempotency_key; end
# @api private
sig do
overridable
.params(
req: Anthropic::Internal::Transport::BaseClient::RequestComponentsShape,
opts: Anthropic::Internal::AnyHash
)
.returns(Anthropic::Internal::Transport::BaseClient::RequestInputShape)
end
private def build_request(req, opts); end
# @api private
sig { params(headers: T::Hash[String, String], retry_count: Integer).returns(Float) }
private def retry_delay(headers, retry_count:); end
# @api private
sig do
params(
request: Anthropic::Internal::Transport::BaseClient::RequestInputShape,
redirect_count: Integer,
retry_count: Integer,
send_retry_header: T::Boolean
)
.returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
end
private def send_request(request, redirect_count:, retry_count:, send_retry_header:); end
# Execute the request specified by `req`. This is the method that all resource
# methods call into.
#
# @overload request(method, path, query: {}, headers: {}, body: nil, unwrap: nil, page: nil, stream: nil, model: Anthropic::Internal::Type::Unknown, options: {})
sig do
params(
method: Symbol,
path: T.any(String, T::Array[String]),
query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
headers: T.nilable(
T::Hash[String,
T.nilable(
T.any(
String,
Integer,
T::Array[T.nilable(T.any(String, Integer))]
)
)]
),
body: T.nilable(T.anything),
unwrap: T.nilable(Symbol),
page: T.nilable(T::Class[Anthropic::Internal::Type::BasePage[Anthropic::Internal::Type::BaseModel]]),
stream: T.nilable(
T::Class[Anthropic::Internal::Type::BaseStream[T.anything,
Anthropic::Internal::Type::BaseModel]]
),
model: T.nilable(Anthropic::Internal::Type::Converter::Input),
options: T.nilable(T.any(Anthropic::RequestOptions, Anthropic::Internal::AnyHash))
)
.returns(T.anything)
end
def request(
method,
path,
query: {},
headers: {},
body: nil,
unwrap: nil,
page: nil,
stream: nil,
model: Anthropic::Internal::Type::Unknown,
options: {}
); end
sig { returns(String) }
def inspect; end
end
end
end
end