From ba5d74d898a2218a69902b7c27c02f9507f5aa80 Mon Sep 17 00:00:00 2001 From: vextrixes <113197359+vextrixes@users.noreply.github.com> Date: Sun, 1 Nov 2026 16:46:50 +0100 Subject: [PATCH] added webmodules --- src/lib.rs | 11 ++++++----- src/webmodules/endpoints.rs | 8 ++++++++ src/webmodules/mod.rs | 13 +++++++++++++ src/webmodules/web_module.rs | 12 ++++++++++++ src/webmodules/web_module_dashboard.rs | 12 ++++++++++++ src/webmodules/web_module_icon.rs | 13 +++++++++++++ src/webmodules/web_module_sub_menu.rs | 8 ++++++++ src/webmodules/web_modules_response.rs | 10 ++++++++++ tracker.md | 6 +++--- 9 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 src/webmodules/endpoints.rs create mode 100644 src/webmodules/mod.rs create mode 100644 src/webmodules/web_module.rs create mode 100644 src/webmodules/web_module_dashboard.rs create mode 100644 src/webmodules/web_module_icon.rs create mode 100644 src/webmodules/web_module_sub_menu.rs create mode 100644 src/webmodules/web_modules_response.rs diff --git a/src/lib.rs b/src/lib.rs index 774fe03..989ba6c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,14 +1,11 @@ mod absence; -mod others; -//campaign mod auth; mod endpoints; mod events; mod gdpr; -//komens mod homework; -//marking mod marks; +mod others; mod payments; mod semester; mod stdtype; @@ -17,7 +14,10 @@ mod substitutions; mod teaching; mod timetable; mod user; -//webmodules +mod webmodules; +//campaign +//marking +//komens //predictor pub use absence::*; @@ -36,3 +36,4 @@ pub use substitutions::*; pub use teaching::*; pub use timetable::*; pub use user::*; +pub use webmodules::*; diff --git a/src/webmodules/endpoints.rs b/src/webmodules/endpoints.rs new file mode 100644 index 0000000..4ccbcce --- /dev/null +++ b/src/webmodules/endpoints.rs @@ -0,0 +1,8 @@ +use crate::{Endpoint, WebModulesResponse}; +use std::marker::PhantomData; + +pub const WEBMODULES_ENDPOINT: Endpoint = Endpoint::Get { + url: "/api/3/webmodule", + auth: true, + _types: PhantomData, +}; diff --git a/src/webmodules/mod.rs b/src/webmodules/mod.rs new file mode 100644 index 0000000..40c0bdb --- /dev/null +++ b/src/webmodules/mod.rs @@ -0,0 +1,13 @@ +mod endpoints; +mod web_module; +mod web_module_dashboard; +mod web_module_icon; +mod web_module_sub_menu; +mod web_modules_response; + +pub use endpoints::*; +pub use web_module::*; +pub use web_module_dashboard::*; +pub use web_module_icon::*; +pub use web_module_sub_menu::*; +pub use web_modules_response::*; diff --git a/src/webmodules/web_module.rs b/src/webmodules/web_module.rs new file mode 100644 index 0000000..4e1e844 --- /dev/null +++ b/src/webmodules/web_module.rs @@ -0,0 +1,12 @@ +use serde::{Deserialize, Serialize}; + +use crate::{WebModuleIcon, WebModuleSubMenu}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct WebModule { + pub icon_id: WebModuleIcon, + pub url: Option, + pub name: String, + pub sub_menu: Vec, +} diff --git a/src/webmodules/web_module_dashboard.rs b/src/webmodules/web_module_dashboard.rs new file mode 100644 index 0000000..94d1e0a --- /dev/null +++ b/src/webmodules/web_module_dashboard.rs @@ -0,0 +1,12 @@ +use serde::{Deserialize, Serialize}; + +use crate::{WebModuleIcon, WebModuleSubMenu}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct WebModuleDashboard { + pub icon_id: WebModuleIcon, + pub url: String, + pub name: Option, + pub sub_menu: Vec, +} diff --git a/src/webmodules/web_module_icon.rs b/src/webmodules/web_module_icon.rs new file mode 100644 index 0000000..f474410 --- /dev/null +++ b/src/webmodules/web_module_icon.rs @@ -0,0 +1,13 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub enum WebModuleIcon { + Akademie, + Ankety, + Dokumenty, + Druzina, + Potvrzeni, + VyukoveZdroje, + WebovyModul, +} diff --git a/src/webmodules/web_module_sub_menu.rs b/src/webmodules/web_module_sub_menu.rs new file mode 100644 index 0000000..e4ef184 --- /dev/null +++ b/src/webmodules/web_module_sub_menu.rs @@ -0,0 +1,8 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct WebModuleSubMenu { + pub url: String, + pub name: String, +} diff --git a/src/webmodules/web_modules_response.rs b/src/webmodules/web_modules_response.rs new file mode 100644 index 0000000..9d4fc31 --- /dev/null +++ b/src/webmodules/web_modules_response.rs @@ -0,0 +1,10 @@ +use serde::{Deserialize, Serialize}; + +use crate::{WebModule, WebModuleDashboard}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] +pub struct WebModulesResponse { + pub web_modules: Vec, + pub dashboard: WebModuleDashboard, +} diff --git a/tracker.md b/tracker.md index 1cd78bc..be8be22 100644 --- a/tracker.md +++ b/tracker.md @@ -1,6 +1,6 @@ # implementations -- [ ] absence +- [x] absence - [x] campaign - [ ] campaign error - [ ] class book @@ -17,7 +17,7 @@ - [x] substitutions - [x] teaching - [x] timetable -- [ ] webmodules +- [x] webmodules - [x] user # Features @@ -35,7 +35,7 @@ - [ ] /api/3/classbook/lessonTags - [ ] /api/3/komens/messages/rating/:messageId - [x] /api/3/absence/student -- [ ] /api/3/webmodule +- [x] /api/3/webmodule - [x] /api/3/timetable/actual - [x] /api/3/payments/classfund/teacher/document/detail/:documentId - [x] /api/3