Skip to main content

ClientConfig

Struct ClientConfig 

Source
pub struct ClientConfig {
    pub timeout: Option<Duration>,
    pub connect_timeout: Option<Duration>,
    pub retry_policy: RetryPolicy,
    pub request_interceptors: Vec<RequestInterceptor>,
    pub response_interceptors: Vec<ResponseInterceptor>,
    pub default_headers: HeaderMap,
    pub cookie_store: bool,
    pub enable_tracing: bool,
}
Expand description

Configuration for the Client.

Controls per-request timeouts, TCP connect timeouts, retry behavior, request/response interceptors, default headers, and cookie persistence.

§Example

use typeway_client::{ClientConfig, RetryPolicy, RequestInterceptor};
use std::sync::Arc;
use std::time::Duration;

let config = ClientConfig::default()
    .timeout(Duration::from_secs(60))
    .retry_policy(RetryPolicy::none())
    .bearer_auth("my-token")
    .cookie_store(true)
    .request_interceptor(Arc::new(|req| {
        req.header("X-Request-Id", "abc123")
    }));

Fields§

§timeout: Option<Duration>

Per-request timeout. None means no timeout.

§connect_timeout: Option<Duration>

TCP connection timeout. None means no timeout.

§retry_policy: RetryPolicy

Retry policy for failed requests.

§request_interceptors: Vec<RequestInterceptor>

Interceptors applied to every outgoing request.

§response_interceptors: Vec<ResponseInterceptor>

Interceptors called on every incoming response.

§default_headers: HeaderMap

Headers sent with every request.

§cookie_store: bool

Whether to enable automatic cookie persistence across requests.

§enable_tracing: bool

Whether to enable built-in request/response tracing via the tracing crate.

When enabled, every request logs the HTTP method, URL, response status, and elapsed time at DEBUG level.

Implementations§

Source§

impl ClientConfig

Source

pub fn timeout(self, d: Duration) -> Self

Set the per-request timeout.

Source

pub fn no_timeout(self) -> Self

Disable the per-request timeout.

Source

pub fn connect_timeout(self, d: Duration) -> Self

Set the TCP connect timeout.

Source

pub fn no_connect_timeout(self) -> Self

Disable the TCP connect timeout.

Source

pub fn retry_policy(self, policy: RetryPolicy) -> Self

Set the retry policy.

Source

pub fn request_interceptor(self, interceptor: RequestInterceptor) -> Self

Add a request interceptor that modifies outgoing requests.

Interceptors are applied in the order they are added.

§Example
use typeway_client::{ClientConfig, RequestInterceptor};
use std::sync::Arc;

let config = ClientConfig::default()
    .request_interceptor(Arc::new(|req| {
        req.header("X-Trace-Id", "abc")
    }));
Source

pub fn response_interceptor(self, interceptor: ResponseInterceptor) -> Self

Add a response interceptor that inspects incoming responses.

Interceptors are called in the order they are added.

§Example
use typeway_client::{ClientConfig, ResponseInterceptor};
use std::sync::Arc;

let config = ClientConfig::default()
    .response_interceptor(Arc::new(|resp| {
        eprintln!("status: {}", resp.status());
    }));
Source

pub fn default_header(self, name: HeaderName, value: HeaderValue) -> Self

Add a default header sent with every request.

§Panics

Panics if name or value cannot be parsed as valid HTTP header components.

Source

pub fn bearer_auth(self, token: &str) -> Self

Convenience method to set a Bearer authentication token.

This adds an Authorization: Bearer <token> header to every request.

Source

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

Enable or disable automatic cookie persistence across requests.

When enabled, the underlying HTTP client stores cookies from responses and sends them back in subsequent requests, providing session-like behavior.

Source

pub fn enable_tracing(self) -> Self

Enable built-in request/response tracing.

When enabled, every HTTP request logs the method, URL, response status, and elapsed time at DEBUG level via the tracing crate.

Trait Implementations§

Source§

impl Clone for ClientConfig

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ClientConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ClientConfig

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> 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: 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> 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
Source§

impl<T> IsEndpoint<T> for T