issue_access_token/
issue_access_token.rs

1use s2::{
2    client::{Client, ClientConfig},
3    types::{
4        AccessTokenId, AccessTokenInfo, AccessTokenScope, Operation, PermittedOperationGroups,
5        ReadWritePermissions, ResourceSet,
6    },
7};
8
9#[tokio::main]
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11    let token = std::env::var("S2_ACCESS_TOKEN")?;
12    let config = ClientConfig::new(token);
13    let client = Client::new(config);
14
15    let access_token_id: AccessTokenId = "my-access-token".parse()?;
16    let access_token_info = AccessTokenInfo::new(access_token_id).with_scope(
17        AccessTokenScope::new()
18            .with_op_groups(
19                PermittedOperationGroups::new()
20                    .with_account(ReadWritePermissions::new().with_read(true)),
21            )
22            .with_op(Operation::CreateStream)
23            .with_streams(ResourceSet::Prefix("my-stream-prefix".to_string()))
24            .with_basins(ResourceSet::Exact("my-perfect-basin".to_string())),
25    );
26    let token = client.issue_access_token(access_token_info).await?;
27
28    println!("Access token: {token}");
29
30    Ok(())
31}