pub struct ClientConfig {
pub timeout: Duration,
pub connect_timeout: Duration,
pub retry_config: RetryConfig,
pub max_connections: usize,
pub pool_idle_timeout: Duration,
pub api_key: Option<ApiKey>,
pub endpoint: Endpoint,
}Expand description
Configuration for the HTTP client
Combines connection settings, retry behavior, and endpoint configuration for the Odos API client.
§Architecture
The configuration separates concerns into three main areas:
- Connection settings: Timeouts, connection pooling
- Retry behavior: How errors are handled and retried
- Endpoint configuration: Which API endpoint and version to use
§Examples
§Basic configuration with defaults
use odos_sdk::ClientConfig;
let config = ClientConfig::default();§Custom endpoint configuration
use odos_sdk::{ClientConfig, Endpoint};
let config = ClientConfig {
endpoint: Endpoint::enterprise_v3(),
..Default::default()
};§Conservative retry behavior
use odos_sdk::ClientConfig;
let config = ClientConfig::conservative();§Full custom configuration
use std::time::Duration;
use odos_sdk::{ClientConfig, RetryConfig, Endpoint};
let config = ClientConfig {
timeout: Duration::from_secs(60),
connect_timeout: Duration::from_secs(15),
retry_config: RetryConfig {
max_retries: 5,
retry_server_errors: true,
..Default::default()
},
max_connections: 50,
endpoint: Endpoint::public_v2(),
..Default::default()
};Fields§
§timeout: DurationRequest timeout duration
Maximum time to wait for a complete request/response cycle. Includes connection time, request transmission, server processing, and response reception.
Default: 30 seconds
connect_timeout: DurationConnection timeout duration
Maximum time to wait when establishing a TCP connection to the server.
Should be shorter than timeout.
Default: 10 seconds
retry_config: RetryConfigRetry behavior configuration
Controls which errors trigger retries and how retries are executed.
See RetryConfig for detailed retry configuration options.
Default: 3 retries with exponential backoff
max_connections: usizeMaximum concurrent connections per host
Limits the number of simultaneous connections in the connection pool. Higher values allow more concurrent requests but consume more resources.
Default: 20
pool_idle_timeout: DurationConnection pool idle timeout
How long to keep idle connections alive in the pool before closing them. Longer timeouts reduce connection overhead but consume resources.
Default: 90 seconds
api_key: Option<ApiKey>Optional API key for authenticated requests
Required for Enterprise endpoints and rate limit increases. Obtain from the Odos dashboard or Enterprise program.
Default: None (unauthenticated requests)
endpoint: EndpointAPI endpoint configuration (host + version)
Combines the API host tier (Public/Enterprise) and version (V2/V3) into a single ergonomic configuration.
Use convenience constructors like [Endpoint::public_v2()] or
[Endpoint::enterprise_v3()] for easy configuration.
Default: [Endpoint::public_v2()]
§Examples
use odos_sdk::{ClientConfig, Endpoint};
// Use Public API V2 (recommended)
let config = ClientConfig {
endpoint: Endpoint::public_v2(),
..Default::default()
};
// Use Enterprise API V3
let config = ClientConfig {
endpoint: Endpoint::enterprise_v3(),
..Default::default()
};Implementations§
Source§impl ClientConfig
impl ClientConfig
Sourcepub fn no_retries() -> Self
pub fn no_retries() -> Self
Create a configuration with no retries
Useful when you want to handle all errors at the application level.
Sourcepub fn conservative() -> Self
pub fn conservative() -> Self
Create a configuration with conservative retry behavior
Only retries transient network failures, not server errors or rate limits.
Trait Implementations§
Source§impl Clone for ClientConfig
impl Clone for ClientConfig
Source§fn clone(&self) -> ClientConfig
fn clone(&self) -> ClientConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ClientConfig
impl Debug for ClientConfig
Auto Trait Implementations§
impl Freeze for ClientConfig
impl RefUnwindSafe for ClientConfig
impl Send for ClientConfig
impl Sync for ClientConfig
impl Unpin for ClientConfig
impl UnwindSafe for ClientConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more