mirror of
https://github.com/wisdgod/cursor-api.git
synced 2025-10-05 14:46:53 +08:00
37 lines
1.0 KiB
Rust
37 lines
1.0 KiB
Rust
use crate::{
|
|
app::model::AppState,
|
|
common::{models::usage::GetUserInfo, utils::get_user_usage},
|
|
};
|
|
use axum::{
|
|
extract::{Query, State},
|
|
Json,
|
|
};
|
|
use serde::Deserialize;
|
|
use std::sync::Arc;
|
|
use tokio::sync::Mutex;
|
|
|
|
#[derive(Deserialize)]
|
|
pub struct GetUserInfoQuery {
|
|
alias: String,
|
|
}
|
|
|
|
pub async fn get_user_info(
|
|
State(state): State<Arc<Mutex<AppState>>>,
|
|
Query(query): Query<GetUserInfoQuery>,
|
|
) -> Json<GetUserInfo> {
|
|
let token_infos = &state.lock().await.token_infos;
|
|
let token_info = token_infos
|
|
.iter()
|
|
.find(|token_info| token_info.alias == Some(query.alias.clone()));
|
|
|
|
let (auth_token, checksum) = match token_info {
|
|
Some(token_info) => (token_info.token.clone(), token_info.checksum.clone()),
|
|
None => return Json(GetUserInfo::Error("No data".to_string())),
|
|
};
|
|
|
|
match get_user_usage(&auth_token, &checksum).await {
|
|
Some(usage) => Json(GetUserInfo::Usage(usage)),
|
|
None => Json(GetUserInfo::Error("No data".to_string())),
|
|
}
|
|
}
|