1use librus_rs::Client;
2
3#[tokio::main]
4async fn main() -> Result<(), librus_rs::Error> {
5 println!("Authenticating with Librus...");
6 let mut client = Client::from_env().await?;
7
8 println!("Authentication successful!");
9
10 println!("\n--- Me ---");
12 let me = client.me().await?;
13 println!("User: {} {}", me.me.user.first_name, me.me.user.last_name);
14
15 println!("\n--- Grades ---");
17 let grades = client.grades().await?;
18 println!("Total grades: {}", grades.grades.len());
19
20 println!("\n--- Homeworks ---");
22 let homeworks = client.homeworks().await?;
23 println!("Total homeworks: {}", homeworks.homeworks.len());
24
25 println!("\n--- Attendances ---");
27 let attendances = client.attendances().await?;
28 println!("Total attendances: {}", attendances.attendances.len());
29
30 println!("\n--- School Notices ---");
32 let notices = client.school_notices().await?;
33 println!("Total notices: {}", notices.school_notices.len());
34
35 println!("\n--- Messages ---");
37 let unread = client.unread_counts().await?;
38 println!(
39 "Unread inbox: {}, notes: {}, alerts: {}",
40 unread.inbox, unread.notes, unread.alerts
41 );
42
43 let inbox = client.inbox_messages(1, 5).await?;
44 println!("Inbox messages (first 5):");
45 for msg in &inbox {
46 let content = Client::decode_message_content(&msg.content).unwrap_or_default();
47 let preview: String = content.chars().take(50).collect();
48 println!(
49 " [{}] {} - {} ({}...)",
50 msg.send_date, msg.sender_name, msg.topic, preview
51 );
52 }
53
54 if let Some(first_msg) = inbox.first() {
56 println!("\n--- Message Detail ---");
57 let detail = client.message(&first_msg.message_id).await?;
58 let content = Client::decode_message_content(&detail.message).unwrap_or_default();
59 println!("From: {}", detail.sender_name);
60 println!("Subject: {}", detail.topic);
61 println!("Content:\n{}", content);
62 if !detail.attachments.is_empty() {
63 println!("Attachments: {:?}", detail.attachments);
64 }
65 }
66
67 println!("\nAll API tests completed successfully!");
68 Ok(())
69}