/
oms
/
lib
Обзор
Документация
Войти
/
oms
/
lib
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
master
src/api/profile.rs
44 строки
1 KB
dot
remove is_ok() check on base64 decode
16 сен 2024, 10:21
16 сен 2024, 10:21
a77076e
Код
Авторство
О чём код?
use base64::Engine; use chrono::DateTime; use reqwest::{header::USER_AGENT, Client}; use reqwest::Error as ReqwestError; use serde_json::Value; use crate::types::profile::Profile; pub async fn get_profile(auth: String) -> Result<Profile, ReqwestError> { let client: Client = Client::new(); let req = client.get( format!( "https://authedu.mosreg.ru/{}", "api/family/web/v1/profile" ) ) .header("X-mes-Subsystem", "familyweb") .header("Auth-Token", &auth) .header(USER_AGENT, "oms <https://gitverse.ru/oms/lib>") .send(); match req.await?.error_for_status() { Ok(resp) => { let token_info = &auth.split(".").collect::<Vec<&str>>()[1]; let expiry_date: i64; let parsed_token_info: Value = serde_json::from_str(&String::from_utf8(base64::prelude::BASE64_STANDARD.decode(token_info).unwrap()).unwrap()).unwrap(); expiry_date = parsed_token_info["exp"].as_i64().unwrap(); let parsed: Value = serde_json::from_str(resp.text().await.unwrap().as_str()).unwrap(); let profile = Profile { mesh_id: parsed["children"][0]["contingent_guid"].as_str().unwrap().to_owned(), user_id: parsed["children"][0]["id"].as_i64().unwrap(), token_expires: DateTime::from_timestamp_millis(expiry_date).unwrap() }; return Ok(profile); }, Err(err) => return Err(err), } }