3 个版本
0.3.6 | 2022 年 10 月 3 日 |
---|---|
0.3.5 | 2022 年 10 月 3 日 |
0.3.0 | 2022 年 10 月 2 日 |
#1 在 #ru
42KB
852 行
Dnevnik-Mos-Rust
一个用于访问 https://dnevnik.mos.ru 内部 API 的 Rust API 包装器
所有 API 信息都是通过逆向工程网络请求收集的。
目标
- 标记 API(主要)
- 课程 API
- 出勤/访问 API
- 基本身份验证
- 教师端 API
用法
use dnevnik::prelude::*;
// assuming you are using tokio, anyhow and chrono
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let auth_token: String = "Your auth token";
let diary: Diary = Diary::new(auth_token).await?;
let student_profile: StudentProfile = diary.profile;
// Gets homework for the last week
let homework: Vec<StudentHomework> = diary.homework(
Utc::now() - Duration::days(7),
Utc::now()
).await?;
// Downloads all attachment files from this homework
homework.iter().for_each(|hw| {
if !hw.homework_entry.attachments.is_empty() {
let attachment: &HomeworkAttachment = &hw.homework_entry.attachments[0];
println!(
"Downloading attachment for {} (path: {})",
hw.homework_entry.subject().name,
attachment.file_name
);
let path: PathBuf = PathBuf::from(&attachment.file_name);
diary.download_attachment(path.clone(), attachment).await?;
}
});
Ok(())
}
更多示例待定
依赖
~7–20MB
~316K SLoC