use amp_rs::{ApiClient, Error};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Error> {
tracing_subscriber::fmt::init();
env::set_var("AMP_TOKEN_PERSISTENCE", "true");
println!("๐ Token Persistence Example");
println!("============================");
let client = ApiClient::new().await?;
println!("\n๐ฅ First token request (will obtain from API):");
let token1 = client.get_token().await?;
println!("โ
Token obtained: {}...", &token1[..20]);
if let Some(token_info) = client.get_token_info().await? {
println!("๐ Token expires at: {}", token_info.expires_at);
println!("๐ Token age: {:?}", token_info.age);
println!("๐ Expires in: {:?}", token_info.expires_in);
println!("๐ Is expired: {}", token_info.is_expired);
println!("๐ Expires soon: {}", token_info.expires_soon);
}
println!("\n๐ฅ Second token request (should load from disk):");
let token2 = client.get_token().await?;
println!("โ
Token retrieved: {}...", &token2[..20]);
if token1 == token2 {
println!("โ
Token successfully loaded from disk!");
} else {
println!("โ ๏ธ Different token - may have been refreshed");
}
println!("\n๐ Force refresh token:");
let token3 = client.force_refresh().await?;
println!("โ
Token refreshed: {}...", &token3[..20]);
println!("\n๐งน Clearing token:");
client.clear_token().await?;
println!("โ
Token cleared from memory and disk");
println!("\n๐ฅ Final token request (will obtain fresh token):");
let token4 = client.get_token().await?;
println!("โ
Fresh token obtained: {}...", &token4[..20]);
println!("\n๐ Token persistence example completed successfully!");
Ok(())
}