From c59b55c66b78e3d4639e873de24b58d268e639cd Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Sat, 7 Feb 2026 17:56:28 +0100 Subject: [PATCH] feat: Add all and remove test --- src/all.rs | 5 +++ src/bin/test.rs | 97 ------------------------------------------------- src/lib.rs | 6 +++ src/models.rs | 6 ++- 4 files changed, 15 insertions(+), 99 deletions(-) create mode 100644 src/all.rs delete mode 100644 src/bin/test.rs diff --git a/src/all.rs b/src/all.rs new file mode 100644 index 0000000..76c8ee4 --- /dev/null +++ b/src/all.rs @@ -0,0 +1,5 @@ +use crate::{api::fetch_api, ApiResponse, SuplError}; + +pub fn get_all_impl(provider_url: &str) -> Result { + fetch_api(provider_url) +} diff --git a/src/bin/test.rs b/src/bin/test.rs deleted file mode 100644 index 60439f4..0000000 --- a/src/bin/test.rs +++ /dev/null @@ -1,97 +0,0 @@ -use jecna_supl_client::{AbsenceEntry, JecnaSuplClient}; - -fn main() { - let client = JecnaSuplClient::new(); - - println!("Fetching schedule for E4..."); - match client.get_schedule("E4".to_string()) { - Ok(result) => { - println!("Last updated: {}", result.status.last_updated); - - if result.schedule.is_empty() { - println!("No substitution schedule found for the upcoming days."); - } - - for (date, day) in result.schedule { - println!("\nDate: {}", date); - println!("In work: {}", day.info.in_work); - if !day.takes_place.is_empty() { - println!("Extra info: {}", day.takes_place); - } - - println!("Changes:"); - for (i, change) in day.changes.iter().enumerate() { - if let Some(c) = change { - println!(" Lesson {}: {}", i + 1, c.text); - } - } - - println!("Absences:"); - for entry in day.absence { - print_absence(entry); - } - } - } - Err(e) => eprintln!("Error fetching schedule: {:?}", e), - } - - println!("\nFetching all teacher absences..."); - match client.get_teacher_absence() { - Ok(result) => { - for (date, entries) in result.absences { - println!("\nDate: {}", date); - for entry in entries { - print_absence(entry); - } - } - } - Err(e) => eprintln!("Error fetching teacher absences: {:?}", e), - } -} - -fn print_absence(entry: AbsenceEntry) { - match entry { - AbsenceEntry::WholeDay { - teacher, - teacher_code, - } => { - println!(" {} ({}): Whole day", teacher, teacher_code); - } - AbsenceEntry::Single { - teacher, - teacher_code, - hours, - } => { - println!(" {} ({}): Lesson {}", teacher, teacher_code, hours); - } - AbsenceEntry::Range { - teacher, - teacher_code, - hours, - } => { - println!( - " {} ({}): Lessons {}-{}", - teacher, teacher_code, hours.from, hours.to - ); - } - AbsenceEntry::Exkurze { - teacher, - teacher_code, - } => { - println!(" {} ({}): Excursion", teacher, teacher_code); - } - AbsenceEntry::Zastoupen { - teacher, - teacher_code, - zastupuje, - } => { - println!( - " {} ({}): Represented by {} ({})", - teacher, teacher_code, zastupuje.teacher, zastupuje.teacher_code - ); - } - AbsenceEntry::Invalid { original } => { - println!(" Invalid entry: {}", original); - } - } -} diff --git a/src/lib.rs b/src/lib.rs index bd93939..4e08ed0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ mod api; mod models; mod schedule; mod teacher_absence; +mod all; use std::sync::RwLock; @@ -37,4 +38,9 @@ impl JecnaSuplClient { let provider = self.provider_url.read().unwrap(); teacher_absence::get_teacher_absence_impl(&provider) } + + pub fn get_all(&self) -> Result { + let provider = self.provider_url.read().unwrap(); + all::get_all_impl(&provider) + } } diff --git a/src/models.rs b/src/models.rs index 82487f2..f613047 100644 --- a/src/models.rs +++ b/src/models.rs @@ -71,17 +71,19 @@ pub struct ChangeEntry { pub text: String, #[serde(rename = "backgroundColor")] pub background_color: Option, + #[serde(rename = "foregroundColor")] + pub foreground_color: Option, #[serde(rename = "willBeSpecified")] pub will_be_specified: Option, } -#[derive(Deserialize)] +#[derive(Deserialize, Debug, uniffi::Record)] pub struct ApiResponse { pub status: Status, pub schedule: HashMap, } -#[derive(Deserialize, Clone)] +#[derive(Deserialize, Clone, Debug, uniffi::Record)] pub struct DailyData { pub info: DayInfo, pub changes: HashMap>>,