12 Commits
Author SHA1 Message Date
vextrixes 92927e24e6 fixed a type 2026-11-03 16:25:19 +01:00
vextrixes 2f7e0731e0 added derives to classbook types 2026-11-03 16:08:01 +01:00
vextrixes aa5404053d added lesson tags endpoint + type 2026-11-03 16:07:30 +01:00
vextrixes 5ddbbe1144 fixed wrong endpoint url 2026-11-03 16:02:07 +01:00
vextrixes 5351f26a38 added previous lesson info endpoint + type 2026-11-03 15:59:05 +01:00
vextrixes e182d997ef added classbook edit endpoint and save absence request 2026-11-03 15:54:51 +01:00
vextrixes 636415e14a added cargo clippy to CI
Rust / build (push) Failing after 3s
2026-11-01 20:41:28 +01:00
vextrixes ba5d74d898 added webmodules 2026-11-01 16:46:50 +01:00
vextrixes eab1110c75 Update class_fund.rs 2026-11-01 03:26:33 +01:00
vextrixes ab5d8c0339 updated the readme 2026-11-01 03:18:07 +01:00
vextrixes 88668c3b9d added a readme 2026-11-01 03:17:07 +01:00
vextrixes ca8c203852 Merge pull request #2 from vextrixes/endpoints
Endpoints
2026-11-01 02:59:43 +01:00
18 changed files with 167 additions and 17 deletions

No files matched your search

+2
View File
@@ -22,5 +22,7 @@ jobs:
- uses: actions/checkout@v4
- name: Build
run: cargo build --verbose --all-features
- name: Run clippy
run: cargo clippy --verbose --all-features
- name: Run tests
run: cargo test --verbose --all-features
+13
View File
@@ -0,0 +1,13 @@
# bakalari-types
### cz🇨🇿
Rustové typy pro práci s daty z API Bakalářů.
Tato crate poskytuje modely a definice koncových bodů pro oblasti, jako jsou autentizace, docházka, události, domácí úkoly, známky, platby, předměty, suplování, výuka, rozvrhy a údaje o uživatelích. Jde o knihovnu typů; neobsahuje HTTP klienta.
---
### en🇬🇧
Rust types for working with data from the Bakaláři API.
The crate provides models and endpoint definitions for areas such as authentication, attendance, events, homework, marks, payments, subjects, substitutions, teaching, timetables, and user data. It is a types library; it does not provide an HTTP client.
+9
View File
@@ -0,0 +1,9 @@
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ClassBookLessonPast {
pub lesson_id: String,
pub last_theme: Option<String>,
pub next_label: Option<String>,
}
+10
View File
@@ -0,0 +1,10 @@
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ClassBookLessonTag {
pub id: String,
pub notice: String,
pub abbreviation: Option<String>,
pub title: Option<String>,
}
@@ -0,0 +1,3 @@
pub struct ClassBookSaveAbsenceRequest {
//TODO
}
@@ -0,0 +1,7 @@
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ClassBookSaveRecordRequest{
//TODO
}
+24
View File
@@ -0,0 +1,24 @@
use crate::{
ClassBookLessonPast, ClassBookLessonTag, ClassBookSaveRecordRequest, ContentType, Endpoint,
};
use std::marker::PhantomData;
pub const EDIT_CLASSBOOK_ENDPOINT: Endpoint<(), ClassBookSaveRecordRequest> = Endpoint::Post {
url: "/api/3/classbook/{recordId}",
auth: true,
content_type: ContentType::Json,
_types: PhantomData,
};
pub const PREVIOUS_LESSON_INFO_CLASSBOOK_ENDPOINT: Endpoint<ClassBookLessonPast, ()> =
Endpoint::Get {
url: "/api/3/lesson/{lessonId}/past",
auth: true,
_types: PhantomData,
};
pub const LESSON_TAGS_CLASSBOOK_ENDPOINT: Endpoint<ClassBookLessonTag, ()> = Endpoint::Get {
url: "/api/3/classbook/lessonTags",
auth: true,
_types: PhantomData,
};
+11
View File
@@ -0,0 +1,11 @@
mod class_book_lesson_past;
mod class_book_lesson_tag;
mod class_book_save_absence_request;
mod endpoints;
mod class_book_save_record_request;
pub use class_book_lesson_past::*;
pub use class_book_lesson_tag::*;
pub use class_book_save_absence_request::*;
pub use endpoints::*;
pub use class_book_save_record_request::*;
+9 -6
View File
@@ -1,14 +1,12 @@
mod absence;
mod others;
//campaign
mod auth;
mod class_book;
mod endpoints;
mod events;
mod gdpr;
//komens
mod homework; //TDOS
//marking
mod homework;
mod marks;
mod others;
mod payments;
mod semester;
mod stdtype;
@@ -17,11 +15,15 @@ mod substitutions;
mod teaching;
mod timetable;
mod user;
//webmodules
mod webmodules;
//campaign
//marking
//komens
//predictor
pub use absence::*;
pub use auth::*;
pub use class_book::*;
pub use endpoints::*;
pub use events::*;
pub use gdpr::*;
@@ -36,3 +38,4 @@ pub use substitutions::*;
pub use teaching::*;
pub use timetable::*;
pub use user::*;
pub use webmodules::*;
-8
View File
@@ -3,14 +3,6 @@ use serde::{Deserialize, Serialize};
use crate::PaymentsTeacherStudentStatus;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ClassfundSummary {
pub student_name_with_class: Option<String>,
pub balance: f64,
pub spent: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ClassFundPaymentInfo {
+8
View File
@@ -0,0 +1,8 @@
use crate::{Endpoint, WebModulesResponse};
use std::marker::PhantomData;
pub const WEBMODULES_ENDPOINT: Endpoint<WebModulesResponse, ()> = Endpoint::Get {
url: "/api/3/webmodule",
auth: true,
_types: PhantomData,
};
+13
View File
@@ -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::*;
+12
View File
@@ -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<String>,
pub name: String,
pub sub_menu: Vec<WebModuleSubMenu>,
}
+12
View File
@@ -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<String>,
pub sub_menu: Vec<WebModuleSubMenu>,
}
+13
View File
@@ -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,
}
+8
View File
@@ -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,
}
+10
View File
@@ -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<WebModule>,
pub dashboard: WebModuleDashboard,
}
+3 -3
View File
@@ -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