pub struct HttpProvider { /* private fields */ }Expand description
Shared HTTP transport for OpenAI-compatible providers.
Holds a reqwest::Client, pre-built headers (auth + content-type),
and the target endpoint URL.
Implementations§
Source§impl HttpProvider
impl HttpProvider
Sourcepub fn bearer(client: Client, key: &str, endpoint: &str) -> Result<Self>
pub fn bearer(client: Client, key: &str, endpoint: &str) -> Result<Self>
Create a provider with Bearer token authentication.
Sourcepub fn no_auth(client: Client, endpoint: &str) -> Self
pub fn no_auth(client: Client, endpoint: &str) -> Self
Create a provider without authentication (e.g. Ollama).
Sourcepub fn custom_header(
client: Client,
header_name: &str,
header_value: &str,
endpoint: &str,
) -> Result<Self>
pub fn custom_header( client: Client, header_name: &str, header_value: &str, endpoint: &str, ) -> Result<Self>
Create a provider with a custom header for authentication.
Used by providers that don’t use Bearer tokens (e.g. Anthropic
uses x-api-key).
Sourcepub fn anthropic(client: Client, key: &str, endpoint: &str) -> Result<Self>
pub fn anthropic(client: Client, key: &str, endpoint: &str) -> Result<Self>
Create a provider with Anthropic authentication headers.
Inserts x-api-key and anthropic-version in addition to the
standard content-type and accept headers.
Sourcepub async fn send(&self, body: &impl Serialize) -> Result<Response>
pub async fn send(&self, body: &impl Serialize) -> Result<Response>
Send a non-streaming request and deserialize the response as JSON.
Sourcepub fn stream_sse(
&self,
body: &impl Serialize,
) -> impl Stream<Item = Result<StreamChunk>> + Send
pub fn stream_sse( &self, body: &impl Serialize, ) -> impl Stream<Item = Result<StreamChunk>> + Send
Stream an SSE response (OpenAI-compatible format).
Parses data: prefixed lines, skips [DONE] sentinel, and
deserializes each chunk as StreamChunk.
Sourcepub async fn send_raw(&self, body: &impl Serialize) -> Result<String>
pub async fn send_raw(&self, body: &impl Serialize) -> Result<String>
Send a non-streaming request and return the raw response body text.
Unlike send(), the caller is responsible for deserialization.
Used by providers whose response schema differs from the OpenAI format (e.g. Anthropic).
Sourcepub fn stream_anthropic(
&self,
body: Value,
) -> impl Stream<Item = Result<StreamChunk>> + Send
pub fn stream_anthropic( &self, body: Value, ) -> impl Stream<Item = Result<StreamChunk>> + Send
Stream an SSE response in Anthropic block-buffer format.
Anthropic uses \n\n-delimited blocks each containing event: and
data: lines, unlike OpenAI’s line-by-line data: prefix format.
Takes the body as an owned serde_json::Value so the stream can be
'static without capturing a borrow.
Trait Implementations§
Source§impl Clone for HttpProvider
impl Clone for HttpProvider
Source§fn clone(&self) -> HttpProvider
fn clone(&self) -> HttpProvider
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more