13 个版本 (5 个重大更改)
新 0.6.1 | 2024 年 8 月 20 日 |
---|---|
0.6.0 | 2024 年 6 月 16 日 |
0.5.1 | 2024 年 6 月 12 日 |
0.4.1 | 2024 年 6 月 2 日 |
0.1.3 | 2023 年 10 月 29 日 |
#1544 在 网页编程
每月 46 次下载
465KB
11K SLoC
快速、简便且可靠的淑园大学 u-saint 客户端
rusaint 是一个基于 Rust 的非官方 u-saint 客户端,可以准确、快速、方便地在各种环境中解析和操作淑园大学 u-saint。
通过实现基于 u-saint 的基础 SAP Web Dynpro 的 Lightspeed 库的最小功能,可以安全地操作和解析 u-saint 内部元素。
- 无 JS 运行时 — 无需 JS 运行时,自行处理请求和响应,因此可以在所有支持 HTTPS 请求的环境中运行。
- 快速速度 — 使用编译成本地环境的 Rust,一旦请求完成即可立即执行,从而快速操作和解析 u-saint。
- 跨平台支持 — 通过 UniFFI 支持 Kotlin、Swift、Python(预计)以及 Node.js 用的 WASM Wrapper(预计),便于在多种平台下使用。
- 简单的功能定义 — 通过 rusaint 提供的 API,可以轻松定义对 rusaint 不支持的 u-saint 应用程序的解析和支持。
示例
use rusaint::application::course_grades::{CourseGradesApplication, model::CourseType, model::SemesterGrade};
use rusaint::application::USaintClientBuilder;
use rusaint::webdynpro::element::Element;
use rusaint::RusaintError;
use std::sync::Arc;
use rusaint::USaintSession;
use futures::executor::block_on;
// 성적 정보를 출력하는 애플리케이션
fn main() {
block_on(print_grades());
/* SemesterGrade { year: 2022, semester: "2 학기", attempted_credits: 17.5, earned_credits: 17.5, pf_earned_credits: 0.5, grade_points_avarage: 4.5, grade_points_sum: 100.0, arithmetic_mean: 100.0, semester_rank: (1, 99), general_rank: (1, 99), academic_probation: false, consult: false, flunked: false }
*/
}
async fn print_grades() -> Result<(), RusaintError> {
// USaintSession::with_token(id: &str, token: &str) 을 이용하여 비밀번호 없이 SSO 토큰으로 로그인 할 수 있음
let session = Arc::new(USaintSession::with_password("20211561", "password").await?);
let mut app = USaintClientBuilder::new().session(session).build_into::<CourseGradesApplication>().await?;
let grades: Vec<SemesterGrade> = app.semesters(CourseType::Bachelor).await?;
for grade in grades {
println!("{:?}", grade);
}
Ok(())
}
依赖项
~18–32MB
~600K SLoC