#api-wrapper #mos #api-bindings #ru #internal #requests #api-request

日志工具

日志工具.mos.ru 内部 API 包装器

3 个版本

0.3.6 2022 年 10 月 3 日
0.3.5 2022 年 10 月 3 日
0.3.0 2022 年 10 月 2 日

#1#ru

MIT 许可证

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