first commit

This commit is contained in:
2024-12-07 13:20:02 -05:00
commit 8c136cce33
6 changed files with 1956 additions and 0 deletions

44
examples/demo.rs Normal file
View File

@@ -0,0 +1,44 @@
use focusmate::FocusmateClient;
use std::env;
use time::OffsetDateTime;
#[tokio::main]
async fn main() {
let api_key = match env::var("FOCUSMATE_API_KEY") {
Ok(key) => key,
Err(_) => {
eprintln!("Please set FOCUSMATE_API_KEY environment variable");
eprintln!("Example: FOCUSMATE_API_KEY=your-key cargo run --example get_sessions");
std::process::exit(1);
}
};
let client = FocusmateClient::new(api_key);
// Get profile
match client.get_me().await {
Ok(user) => println!("{user:#?}"),
Err(e) => eprintln!("Error: {e:?}"),
}
// Get public profile of a user
match client
.get_user("6c267455-a530-4d4c-ba17-2e375932d976")
.await
{
Ok(user) => println!("{user:#?}"),
Err(e) => eprintln!("Error: {e:?}"),
}
// Get sessions for last month
let start = OffsetDateTime::now_utc() - time::Duration::days(30);
let end = OffsetDateTime::now_utc();
let sessions = client.get_sessions(&start, &end).await;
match sessions {
Ok(sessions) => {
let n_sessions = sessions.iter().filter(|s| s.completed()).count();
println!("{n_sessions} completed sessions in period.");
}
Err(e) => eprintln!("Error: {e:?}"),
}
}