use waka_api::{StatsRange, SummaryParams, WakaClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key =
std::env::var("WAKA_API_KEY").expect("WAKA_API_KEY environment variable must be set");
let client = WakaClient::new(&api_key);
let me = client.me().await?;
println!("Logged in as: {} ({})", me.display_name, me.username);
println!("Timezone: {}", me.timezone);
let today = SummaryParams::today();
let summary = client.summaries(today).await?;
println!("\nToday's coding summary:");
for entry in &summary.data {
let total = &entry.grand_total.text;
let date = entry.range.date.as_deref().unwrap_or("?");
println!(" {date}: {total}");
}
let stats = client.stats(StatsRange::Last7Days).await?;
let s = stats.data;
println!("\nLast 7 days: {} total", s.human_readable_total);
println!("Top languages:");
for lang in s.languages.iter().take(5) {
println!(" {} — {}", lang.name, lang.text);
}
let projects = client.projects().await?;
println!("\nProjects ({} total):", projects.data.len());
for p in projects.data.iter().take(5) {
println!(" {}", p.name);
}
Ok(())
}