list_all_basins/
list_all_basins.rs

1use s2::{
2    client::{Client, ClientConfig},
3    types::ListBasinsRequest,
4};
5
6#[tokio::main]
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8    let token = std::env::var("S2_AUTH_TOKEN")?;
9    let config = ClientConfig::new(token);
10    let client = Client::new(config);
11
12    let mut all_basins = Vec::new();
13
14    let mut has_more = true;
15    let mut start_after: Option<String> = None;
16
17    while has_more {
18        let mut list_basins_request = ListBasinsRequest::new();
19        if let Some(start_after) = start_after.take() {
20            list_basins_request = list_basins_request.with_start_after(start_after);
21        }
22
23        let list_basins_response = client.list_basins(list_basins_request).await?;
24
25        all_basins.extend(list_basins_response.basins);
26
27        start_after = all_basins.last().map(|b| b.name.clone());
28        has_more = list_basins_response.has_more;
29    }
30
31    println!("{all_basins:#?}");
32
33    Ok(())
34}