From 32b2d69a4323aa2700c7f872044cd546b7dcfd0d Mon Sep 17 00:00:00 2001 From: vextrixes <113197359+vextrixes@users.noreply.github.com> Date: Thu, 29 Oct 2026 18:35:19 +0100 Subject: [PATCH] added substitutions endpoints --- src/lib.rs | 8 +++----- src/{ => others}/api_info.rs | 0 src/others/endpoints.rs | 15 +++++++++++++++ src/others/mod.rs | 5 +++++ src/substitutions/endpoints.rs | 15 +++++++++++++++ src/substitutions/mod.rs | 5 +++++ src/{ => substitutions}/substitutions.rs | 15 +++++++++++++++ tracker.md | 4 ++-- 8 files changed, 60 insertions(+), 7 deletions(-) rename src/{ => others}/api_info.rs (100%) create mode 100644 src/others/endpoints.rs create mode 100644 src/others/mod.rs create mode 100644 src/substitutions/endpoints.rs create mode 100644 src/substitutions/mod.rs rename src/{ => substitutions}/substitutions.rs (78%) diff --git a/src/lib.rs b/src/lib.rs index c158512..c728c09 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,6 @@ mod absence; -mod api_info; mod attachment; +mod others; //campaign mod auth; mod campaign; @@ -24,7 +24,6 @@ mod user; //TODOS //predictor pub use absence::*; -pub use api_info::ApiInfo; pub use attachment::AttachmentInfo; pub use auth::*; pub use campaign::Campaign; @@ -37,6 +36,7 @@ pub use gdpr::{ }; pub use homework::*; pub use marks::*; +pub use others::*; pub use payments::*; pub use semester::{ CertificateTerm, CertificateTerms, FinalMark, PedagogicalMeasure, PedagogicalMeasures, @@ -46,9 +46,7 @@ pub use stdtype::{ Teacher, TeacherSet, TimetableStudent, }; pub use subjects::*; -pub use substitutions::{ - ChangeDisplayType, ChangeLessonInfo, SubstitutionChange, SubstitutionChangeType, Substitutions, -}; +pub use substitutions::*; pub use teaching::*; pub use timetable::*; pub use user::*; diff --git a/src/api_info.rs b/src/others/api_info.rs similarity index 100% rename from src/api_info.rs rename to src/others/api_info.rs diff --git a/src/others/endpoints.rs b/src/others/endpoints.rs new file mode 100644 index 0000000..50cbfa6 --- /dev/null +++ b/src/others/endpoints.rs @@ -0,0 +1,15 @@ +use std::marker::PhantomData; + +use crate::{ApiInfo, Endpoint}; + +pub const API_V3_INFO_ENDPOINT: Endpoint<(), ApiInfo> = Endpoint::Get { + url: "/api/3", + auth: false, + _types: PhantomData, +}; + +pub const APIS_INFO_ENDPOINT: Endpoint<(), Vec> = Endpoint::Get { + url: "/api", + auth: false, + _types: PhantomData, +}; diff --git a/src/others/mod.rs b/src/others/mod.rs new file mode 100644 index 0000000..6053aa5 --- /dev/null +++ b/src/others/mod.rs @@ -0,0 +1,5 @@ +mod api_info; +mod endpoints; + +pub use api_info::*; +pub use endpoints::*; diff --git a/src/substitutions/endpoints.rs b/src/substitutions/endpoints.rs new file mode 100644 index 0000000..1f24737 --- /dev/null +++ b/src/substitutions/endpoints.rs @@ -0,0 +1,15 @@ +use std::marker::PhantomData; + +use crate::{Endpoint, SubstitutionCycles, Substitutions}; + +pub const SUBSTITUTIONS_ENDPOINT: Endpoint<(), Substitutions> = Endpoint::Get { + url: "/api/3/substitutions", + auth: true, + _types: PhantomData, +}; + +pub const SUBSTITUTION_CYCLES_ENDPOINT: Endpoint<(), SubstitutionCycles> = Endpoint::Get { + url: "/api/3/substitutions/cycles", + auth: true, + _types: PhantomData, +}; diff --git a/src/substitutions/mod.rs b/src/substitutions/mod.rs new file mode 100644 index 0000000..c516495 --- /dev/null +++ b/src/substitutions/mod.rs @@ -0,0 +1,5 @@ +mod endpoints; +mod substitutions; + +pub use endpoints::*; +pub use substitutions::*; diff --git a/src/substitutions.rs b/src/substitutions/substitutions.rs similarity index 78% rename from src/substitutions.rs rename to src/substitutions/substitutions.rs index 359f9d2..4a3e453 100644 --- a/src/substitutions.rs +++ b/src/substitutions/substitutions.rs @@ -53,3 +53,18 @@ pub struct ChangeLessonInfo { subject_abbrev: Option, room_abbrev: Option, } + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct SubstitutionCycles { + pub cycles_info: Option>, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct DayCycleInfo { + pub date: DateTime, + pub code: Option, + pub abbrev: Option, + pub name: Option, +} diff --git a/tracker.md b/tracker.md index f22119c..e418479 100644 --- a/tracker.md +++ b/tracker.md @@ -55,7 +55,7 @@ - [ ] /api/3/komens/messages/received/:messageId - [x] /api/3/user - [ ] /api/3/payments/regularpayments/detail/:paymentId -- [ ] /api/3/substitutions +- [x] /api/3/substitutions - [ ] /api/3/marks/what-if - [ ] /api/3/gdpr/commissioner/send-objection - [ ] /api/3/gdpr/consents/person/new @@ -108,7 +108,7 @@ - [ ] /api/3/gdpr/commissioners - [ ] /api/3/classbook/:recordId - [ ] /api/3/marking/marks/:atomId -- [ ] /api/3/substitutions/cycles +- [x] /api/3/substitutions/cycles - [x] /api/3/logintoken - [ ] /api/3/komens/message-types/edit/:messageId - [ ] /api/3/payments/classfund/teacher/documents/:classId