Skip to main content

docs_configuration/
docs_configuration.rs

1//! Documentation examples for Configuration page.
2//!
3//! Run with: cargo run --example docs_configuration
4
5use std::{num::NonZeroU32, time::Duration};
6
7use s2_sdk::{
8    S2,
9    types::{AccountEndpoint, BasinEndpoint, RetryConfig, S2Config, S2Endpoints},
10};
11
12fn main() -> Result<(), Box<dyn std::error::Error>> {
13    // Example: Custom endpoints (e.g., for s2-lite local dev)
14    {
15        // ANCHOR: custom-endpoints
16        let client = S2::new(
17            S2Config::new("local-token").with_endpoints(S2Endpoints::new(
18                AccountEndpoint::new("http://localhost:8080")?,
19                BasinEndpoint::new("http://localhost:8080")?,
20            )?),
21        )?;
22        // ANCHOR_END: custom-endpoints
23        println!("Created client with custom endpoints: {:?}", client);
24    }
25
26    // Example: Custom retry configuration
27    {
28        let access_token = std::env::var("S2_ACCESS_TOKEN").unwrap_or_else(|_| "demo".into());
29        // ANCHOR: retry-config
30        let client = S2::new(
31            S2Config::new(access_token).with_retry(
32                RetryConfig::new()
33                    .with_max_attempts(NonZeroU32::new(5).unwrap())
34                    .with_min_base_delay(Duration::from_millis(100))
35                    .with_max_base_delay(Duration::from_secs(2)),
36            ),
37        )?;
38        // ANCHOR_END: retry-config
39        println!("Created client with retry config: {:?}", client);
40    }
41
42    // Example: Custom timeout configuration
43    {
44        let access_token = std::env::var("S2_ACCESS_TOKEN").unwrap_or_else(|_| "demo".into());
45        // ANCHOR: timeout-config
46        let client = S2::new(
47            S2Config::new(access_token)
48                .with_connection_timeout(Duration::from_secs(5))
49                .with_request_timeout(Duration::from_secs(10)),
50        )?;
51        // ANCHOR_END: timeout-config
52        println!("Created client with timeout config: {:?}", client);
53    }
54
55    Ok(())
56}