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        let token = "local-token".to_string();
16        // ANCHOR: custom-endpoints
17        let endpoints = S2Endpoints::new(
18            AccountEndpoint::new("http://localhost:8080")?,
19            BasinEndpoint::new("http://localhost:8080")?,
20        )?;
21
22        let client = S2::new(S2Config::new(token).with_endpoints(endpoints))?;
23        // ANCHOR_END: custom-endpoints
24        println!("Created client with custom endpoints: {:?}", client);
25    }
26
27    // Example: Custom retry configuration
28    {
29        let token = std::env::var("S2_ACCESS_TOKEN").unwrap_or_else(|_| "demo".into());
30        // ANCHOR: retry-config
31        let client = S2::new(
32            S2Config::new(token).with_retry(
33                RetryConfig::new()
34                    .with_max_attempts(NonZeroU32::new(5).unwrap())
35                    .with_min_base_delay(Duration::from_millis(100))
36                    .with_max_base_delay(Duration::from_secs(2)),
37            ),
38        )?;
39        // ANCHOR_END: retry-config
40        println!("Created client with retry config: {:?}", client);
41    }
42
43    // Example: Custom timeout configuration
44    {
45        let token = std::env::var("S2_ACCESS_TOKEN").unwrap_or_else(|_| "demo".into());
46        // ANCHOR: timeout-config
47        let client = S2::new(
48            S2Config::new(token)
49                .with_connection_timeout(Duration::from_secs(5))
50                .with_request_timeout(Duration::from_secs(10)),
51        )?;
52        // ANCHOR_END: timeout-config
53        println!("Created client with timeout config: {:?}", client);
54    }
55
56    Ok(())
57}