Skip to main content

test_api/
test_api.rs

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    // Test Me endpoint
11    println!("\n--- Me ---");
12    let me = client.me().await?;
13    println!("User: {} {}", me.me.user.first_name, me.me.user.last_name);
14
15    // Test Grades
16    println!("\n--- Grades ---");
17    let grades = client.grades().await?;
18    println!("Total grades: {}", grades.grades.len());
19
20    // Test Homeworks
21    println!("\n--- Homeworks ---");
22    let homeworks = client.homeworks().await?;
23    println!("Total homeworks: {}", homeworks.homeworks.len());
24
25    // Test Attendances
26    println!("\n--- Attendances ---");
27    let attendances = client.attendances().await?;
28    println!("Total attendances: {}", attendances.attendances.len());
29
30    // Test School Notices (Announcements)
31    println!("\n--- School Notices ---");
32    let notices = client.school_notices().await?;
33    println!("Total notices: {}", notices.school_notices.len());
34
35    // Test Messages API
36    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    // Get full message detail
55    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}