use std::env;
use aoc_leaderboard::aoc::{Leaderboard, LeaderboardCredentials};
use dotenvy::dotenv;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let _ = dotenv();
let leaderboard_id = env::var("AOC_LEADERBOARD_ID")?.parse()?;
let credentials = aoc_credentials()?;
let year = 2024;
let leaderboard = Leaderboard::get(year, leaderboard_id, &credentials).await?;
println!("Leaderboard for year {year} has {} members.", leaderboard.members.len());
Ok(())
}
fn aoc_credentials() -> anyhow::Result<LeaderboardCredentials> {
Ok(env::var("AOC_VIEW_KEY")
.map(LeaderboardCredentials::ViewKey)
.or_else(|_| env::var("AOC_SESSION").map(LeaderboardCredentials::SessionCookie))?)
}