Skip to main content

HttpClient

Struct HttpClient 

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

Internal HTTP client that handles requests with authentication and retries

Implementations§

Source§

impl HttpClient

Source

pub fn new(config: ClientConfig) -> Result<Self, ApiError>

Creates a new HttpClient without OAuth support.

Source

pub fn new_with_oauth( config: ClientConfig, oauth_config: Option<OAuthConfig>, ) -> Result<Self, ApiError>

Creates a new HttpClient with optional OAuth support.

When oauth_config is provided, the client will automatically fetch and refresh OAuth tokens before making requests.

Source

pub fn base_url(&self) -> &str

Returns the configured base URL.

Source

pub fn config(&self) -> &ClientConfig

Returns a reference to the client configuration.

Source

pub async fn execute_request_raw<T>( &self, method: Method, path: &str, body: Option<Value>, query_params: Option<Vec<(String, String)>>, options: Option<RequestOptions>, ) -> Result<RawResponse<T>, ApiError>

Execute a request and return the parsed body along with HTTP status code and headers.

Unlike execute_request, this method preserves the HTTP metadata from the response, which is useful for paginated endpoints where callers need access to status codes and headers alongside the deserialized body.

Source

pub async fn execute_request<T>( &self, method: Method, path: &str, body: Option<Value>, query_params: Option<Vec<(String, String)>>, options: Option<RequestOptions>, ) -> Result<T, ApiError>

Execute a request with the given method, path, and options

Source

pub async fn execute_request_with_base_url<T>( &self, base_url: &str, method: Method, path: &str, body: Option<Value>, query_params: Option<Vec<(String, String)>>, options: Option<RequestOptions>, ) -> Result<T, ApiError>

Execute a request with an explicit base URL override.

Used for multi-URL environments where different endpoints resolve to different base URLs.

Source

pub async fn execute_stream_request( &self, method: Method, path: &str, body: Option<Value>, query_params: Option<Vec<(String, String)>>, options: Option<RequestOptions>, ) -> Result<ByteStream, ApiError>

Execute a request and return a streaming response (for large file downloads)

This method returns a ByteStream that can be used to download large files efficiently without loading the entire content into memory. The stream can be consumed chunk by chunk, written directly to disk, or collected into bytes.

§Examples

Option 1: Collect all bytes into memory

let stream = client.execute_stream_request(
    Method::GET,
    "/file",
    None,
    None,
    None,
).await?;

let bytes = stream.collect().await?;

Option 2: Process chunks with try_next()

let mut stream = client.execute_stream_request(
    Method::GET,
    "/large-file",
    None,
    None,
    None,
).await?;

while let Some(chunk) = stream.try_next().await? {
    process_chunk(&chunk);
}

Option 3: Stream with futures::Stream trait

use futures::StreamExt;

let stream = client.execute_stream_request(
    Method::GET,
    "/large-file",
    None,
    None,
    None,
).await?;

let mut file = tokio::fs::File::create("output.mp4").await?;
let mut stream = std::pin::pin!(stream);
while let Some(chunk) = stream.next().await {
    let chunk = chunk?;
    tokio::io::AsyncWriteExt::write_all(&mut file, &chunk).await?;
}
Source

pub async fn execute_stream_request_with_base_url( &self, base_url: &str, method: Method, path: &str, body: Option<Value>, query_params: Option<Vec<(String, String)>>, options: Option<RequestOptions>, ) -> Result<ByteStream, ApiError>

Execute a streaming request with an explicit base URL override.

Trait Implementations§

Source§

impl Clone for HttpClient

Source§

fn clone(&self) -> HttpClient

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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: Sized + 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: Sized + 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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<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