use super::Query;
use crate::error::Result;
use crate::request::{ApiClient, ApiResponse, CryptoType};
use md5::{Digest, Md5};
use serde_json::json;
impl ApiClient {
pub async fn login(&self, query: &Query) -> Result<ApiResponse> {
let password = if let Some(md5_pw) = query.get("md5_password") {
md5_pw.to_string()
} else {
let pw = query.get("password").unwrap_or("");
format!("{:x}", Md5::digest(pw.as_bytes()))
};
let data = json!({
"type": "0",
"https": "true",
"username": query.get("email").unwrap_or(""),
"password": password,
"rememberLogin": "true"
});
let mut result = self
.request("/api/w/login", data, query.to_option(CryptoType::default()))
.await?;
if result.body.get("code").and_then(|v| v.as_i64()) == Some(502) {
result.status = 200;
result.body = json!({
"msg": "账号或密码错误",
"code": 502,
"message": "账号或密码错误"
});
}
Ok(result)
}
}