use chrono::{Datelike, Utc};
use schoolsoft::ClientBuilder;
use std::io;
#[tokio::main]
async fn main() -> io::Result<()> {
let mut client = ClientBuilder::new().build();
let username = prompt("Username: ")?;
let password = prompt("Password: ")?;
let school = prompt("School: ")?;
match client.login(&username, &password, &school).await {
Ok(_) => {}
Err(e) => {
eprintln!("Failed to login: {}", e);
return Ok(());
}
};
let mut user = client.user.unwrap();
println!("Logged in as {}", user.name);
let now = Utc::now().naive_local();
let today = now.date();
let mut weeks = user.get_schedule().await.unwrap().weeks;
for day in today.iter_days() {
let week = weeks.get_mut(day.iso_week().week0() as usize).unwrap();
let schedule = week.get_day(day.weekday());
let lessons = &schedule.lessons;
if lessons.is_empty() {
continue;
}
for lesson in lessons.iter() {
if schedule.date.and_time(lesson.start) < now {
continue;
}
dbg!(lesson);
return Ok(());
}
}
Ok(())
}
fn prompt(prompt: &str) -> io::Result<String> {
let mut buf = String::new();
println!("{}", prompt);
io::stdin().read_line(&mut buf)?;
Ok(buf.trim_end().to_string())
}