HttpTransport

Struct HttpTransport 

Source
pub struct HttpTransport { /* private fields */ }
Expand description

Reqwest-based HTTP transport implementation, encapsulating all HTTP details

HTTP transport implementation based on reqwest, encapsulating all HTTP details

This is the concrete implementation of the HttpClient trait, encapsulating all HTTP details

Implementations§

Source§

impl HttpTransport

Source

pub fn new() -> Self

Create new HTTP transport instance

Automatically detects AI_PROXY_URL environment variable for proxy configuration

Note: This method will always check for AI_PROXY_URL environment variable. If you want to avoid automatic proxy detection, use new_without_proxy() instead.

Source

pub fn new_without_proxy() -> Self

Create new HTTP transport instance without automatic proxy detection

This method creates a transport instance without checking AI_PROXY_URL environment variable. Use this when you want explicit control over proxy configuration.

Source

pub fn with_timeout(timeout: Duration) -> Self

Create HTTP transport instance with timeout

Automatically detects AI_PROXY_URL environment variable for proxy configuration

Source

pub fn with_timeout_without_proxy(timeout: Duration) -> Self

Create HTTP transport instance with timeout without automatic proxy detection

This method creates a transport instance with timeout but without checking AI_PROXY_URL environment variable.

Source

pub fn with_client(client: Client, timeout: Duration) -> Self

Create an instance from an existing reqwest::Client (injected)

Examples found in repository?
examples/custom_transport.rs (line 16)
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8    // Build a reqwest client with custom pool settings
9    let reqwest_client = Client::builder()
10        .pool_max_idle_per_host(32)
11        .pool_idle_timeout(Duration::from_secs(90))
12        .timeout(Duration::from_secs(30))
13        .build()?;
14
15    // Wrap into library transport and inject
16    let transport = HttpTransport::with_client(reqwest_client, Duration::from_secs(30));
17
18    let config = ProviderConfigs::groq();
19    let _adapter = GenericAdapter::with_transport(config, transport)?;
20
21    println!("Created generic adapter with custom transport");
22    Ok(())
23}
Source

pub fn with_reqwest_client(client: Client, timeout: Duration) -> Self

Convenience alias that makes the intent explicit: create from a pre-built reqwest::Client.

This is a small, descriptive wrapper around with_client that callers may find more discoverable when constructing transports from an external reqwest::Client.

Source

pub fn new_with_config( config: HttpTransportConfig, ) -> Result<Self, TransportError>

Create instance using HttpTransportConfig

Examples found in repository?
examples/custom_transport_config.rs (line 14)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    let cfg = HttpTransportConfig {
8        timeout: Duration::from_secs(30),
9        proxy: None,
10        pool_max_idle_per_host: Some(16),
11        pool_idle_timeout: Some(Duration::from_secs(60)),
12    };
13
14    let transport = HttpTransport::new_with_config(cfg)?;
15    let provider_cfg = ProviderConfigs::groq();
16    let _adapter = GenericAdapter::with_transport(provider_cfg, transport)?;
17
18    println!("Created adapter using HttpTransportConfig");
19    Ok(())
20}
Source

pub fn with_proxy( timeout: Duration, proxy_url: Option<&str>, ) -> Result<Self, TransportError>

Create HTTP transport instance with custom proxy

Source

pub fn timeout(&self) -> Duration

Get current timeout setting

Source§

impl HttpTransport

Source

pub fn boxed(self) -> DynHttpTransportRef

Produce an Arc-wrapped object-safe transport reference

Trait Implementations§

Source§

impl Default for HttpTransport

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl HttpClient for HttpTransport

Source§

fn request<'life0, 'life1, 'life2, 'async_trait, T, R>( &'life0 self, method: Method, url: &'life1 str, headers: Option<HashMap<String, String>>, body: Option<&'life2 T>, ) -> Pin<Box<dyn Future<Output = Result<R, TransportError>> + Send + 'async_trait>>
where T: Serialize + Send + Sync + 'async_trait, R: for<'de> Deserialize<'de> + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Send HTTP request
Source§

fn request_with_retry<'life0, 'life1, 'life2, 'async_trait, T, R>( &'life0 self, method: Method, url: &'life1 str, headers: Option<HashMap<String, String>>, body: Option<&'life2 T>, _max_retries: u32, ) -> Pin<Box<dyn Future<Output = Result<R, TransportError>> + Send + 'async_trait>>
where T: Serialize + Send + Sync + Clone + 'async_trait, R: for<'de> Deserialize<'de> + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Send HTTP request with retry
Source§

fn get<'life0, 'life1, 'async_trait, R>( &'life0 self, url: &'life1 str, headers: Option<HashMap<String, String>>, ) -> Pin<Box<dyn Future<Output = Result<R, TransportError>> + Send + 'async_trait>>
where R: for<'de> Deserialize<'de> + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Send GET request
Source§

fn post<'life0, 'life1, 'life2, 'async_trait, T, R>( &'life0 self, url: &'life1 str, headers: Option<HashMap<String, String>>, body: &'life2 T, ) -> Pin<Box<dyn Future<Output = Result<R, TransportError>> + Send + 'async_trait>>
where T: Serialize + Send + Sync + 'async_trait, R: for<'de> Deserialize<'de> + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Send POST request
Source§

fn put<'life0, 'life1, 'life2, 'async_trait, T, R>( &'life0 self, url: &'life1 str, headers: Option<HashMap<String, String>>, body: &'life2 T, ) -> Pin<Box<dyn Future<Output = Result<R, TransportError>> + Send + 'async_trait>>
where T: Serialize + Send + Sync + 'async_trait, R: for<'de> Deserialize<'de> + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Send PUT request

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,