ncm_api_rs/api/
eapi_decrypt.rs1use super::Query;
2use crate::crypto::{eapi_req_decrypt, eapi_res_decrypt};
5use crate::error::Result;
6use crate::request::{ApiClient, ApiResponse};
7use serde_json::json;
8
9impl ApiClient {
10 pub fn eapi_decrypt(&self, query: &Query) -> Result<ApiResponse> {
17 let hex_string = match query.get("hexString") {
18 Some(s) => s,
19 None => {
20 return Ok(ApiResponse {
21 status: 400,
22 body: json!({
23 "code": 400,
24 "message": "hex string is required"
25 }),
26 cookie: vec![],
27 });
28 }
29 };
30
31 let is_req = query.get_or("isReq", "true") != "false";
32 let pure_hex = hex_string.replace(' ', "");
33
34 let data = if is_req {
35 match eapi_req_decrypt(&pure_hex) {
36 Some((url, body)) => json!({ "url": url, "body": body }),
37 None => json!(null),
38 }
39 } else {
40 match eapi_res_decrypt(&pure_hex) {
41 Some(val) => val,
42 None => json!(null),
43 }
44 };
45
46 Ok(ApiResponse {
47 status: 200,
48 body: json!({
49 "code": 200,
50 "data": data
51 }),
52 cookie: vec![],
53 })
54 }
55}