Crates.io | rusaint |
lib.rs | rusaint |
version | 0.7.3 |
source | src |
created_at | 2023-10-15 01:08:47.681891 |
updated_at | 2024-11-05 12:48:36.106166 |
description | Easy-to-use SSU u-saint client |
homepage | https://eatsteak.dev |
repository | https://github.com/EATSTEAK/rusaint |
max_upload_size | |
id | 1003368 |
size | 493,307 |
빠르고 간편하며 믿을 수 있는 숭실대학교 u-saint 클라이언트
rusaint는 숭실대학교 u-saint를 정확하고 빠르게, 간편하게 파싱하고 다양한 환경에서 조작할 수 있는 Rust 기반 비공식 u-saint 클라이언트입니다.
u-saint의 기반인 SAP Web Dynpro에서 사용하는 Lightspeed 라이브러리의 최소 동작을 구현하여 안전하게 u-saint 내부 요소들을 조작하고 파싱할 수 있습니다.
cargo add rusaint
use rusaint::application::course_grades::{CourseGrades, model::SemesterSummary};
use rusaint::session::USaintSession;
use futures::executor::block_on;
// 성적 정보를 출력하는 애플리케이션
fn main() {
block_on(print_grades());
/* SemesterSummary { 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::from_token(id: &str, token: &str) 을 이용하여 비밀번호 없이 SSO 토큰으로 로그인 할 수 있음
let session = USaintSession::from_password("20211561", "password").await?;
let mut app = USaintClientBuilder::new().session(session).build_into::<CourseGrades>().await?;
let grades: Vec<SemesterGrade> = app.semesters(CourseType::Bachelor).await?;
for grade in grades {
println!("{:?}", grade);
}
Ok(())
}