30 lines
864 B
Rust
30 lines
864 B
Rust
use std::collections::HashMap;
|
|
|
|
use crate::api::fetch_api;
|
|
use crate::models::{DailySchedule, SuplError, SuplResult};
|
|
|
|
pub fn get_schedule_impl(provider_url: &str, class_name: String) -> Result<SuplResult, SuplError> {
|
|
let resp = fetch_api(provider_url)?;
|
|
|
|
let mut schedule_output = HashMap::new();
|
|
|
|
for (date, daily_data) in resp.schedule {
|
|
if let Some(class_changes) = daily_data.changes.get(&class_name) {
|
|
schedule_output.insert(
|
|
date,
|
|
DailySchedule {
|
|
info: daily_data.info,
|
|
changes: class_changes.clone(),
|
|
absence: daily_data.absence,
|
|
takes_place: daily_data.takes_place,
|
|
},
|
|
);
|
|
}
|
|
}
|
|
|
|
Ok(SuplResult {
|
|
status: resp.status,
|
|
schedule: schedule_output,
|
|
})
|
|
}
|