Skip to main content

HttpClientBuilder

Struct HttpClientBuilder 

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

Builder for configuring HTTP clients.

Provides a consistent way to configure HTTP clients across all API crates with sensible defaults.

§Example

use polyoxide_core::HttpClientBuilder;

let client = HttpClientBuilder::new("https://api.example.com")
    .timeout_ms(60_000)
    .pool_size(20)
    .build()
    .unwrap();

Implementations§

Source§

impl HttpClientBuilder

Source

pub fn new(base_url: impl Into<String>) -> Self

Create a new HTTP client builder with the given base URL.

Source

pub fn timeout_ms(self, timeout: u64) -> Self

Set request timeout in milliseconds.

Default: 30,000ms (30 seconds)

Source

pub fn pool_size(self, size: usize) -> Self

Set connection pool size per host.

Default: 10 connections

Source

pub fn with_rate_limiter(self, limiter: RateLimiter) -> Self

Set a rate limiter for this client.

Source

pub fn with_retry_config(self, config: RetryConfig) -> Self

Set retry configuration for 429 responses.

Source

pub fn with_max_concurrent(self, max: usize) -> Self

Set the maximum number of concurrent in-flight HTTP requests.

Prevents Cloudflare 1015 rate-limit errors caused by request bursts when many callers share the same client concurrently.

Source

pub fn gzip(self, enabled: bool) -> Self

Ask for gzip-compressed responses and decode them.

Off by default. The workspace enables reqwest’s gzip feature for hosts with large bodies (Binance’s exchangeInfo is 1.15 MB raw and 51 KB gzipped), and with the feature on reqwest would otherwise send Accept-Encoding: gzip from every client. Leaving it off keeps every other crate’s requests byte-identical to before the feature existed.

Source

pub fn build(self) -> Result<HttpClient, ApiError>

Build the HTTP client.

Trait Implementations§

Source§

impl Default for HttpClientBuilder

Source§

fn default() -> Self

Returns the “default value” for a type. 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> 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> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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