ncm_api_rs/api/
verify_get_qr.rs1use super::Query;
2use crate::error::Result;
3use crate::request::{ApiClient, ApiResponse, CryptoType};
9use serde_json::json;
10
11impl ApiClient {
12 pub async fn verify_get_qr(&self, query: &Query) -> Result<ApiResponse> {
15 let params = json!({
16 "event_id": query.get("evid").unwrap_or(""),
17 "sign": query.get("sign").unwrap_or("")
18 });
19 let data = json!({
20 "verifyConfigId": query.get("vid").unwrap_or(""),
21 "verifyType": query.get("type").unwrap_or(""),
22 "token": query.get("token").unwrap_or(""),
23 "params": params.to_string(),
24 "size": 150
25 });
26 let res = self
27 .request(
28 "/api/frontrisk/verify/getqrcode",
29 data,
30 query.to_option(CryptoType::Weapi),
31 )
32 .await?;
33
34 let qr_code = res
35 .body
36 .get("data")
37 .and_then(|d| d.get("qrCode"))
38 .and_then(|q| q.as_str())
39 .unwrap_or("");
40
41 let token = query.get("token").unwrap_or("");
42 let vid = query.get("vid").unwrap_or("");
43 let verify_type = query.get("type").unwrap_or("");
44 let evid = query.get("evid").unwrap_or("");
45 let sign = query.get("sign").unwrap_or("");
46 let params_str = json!({"event_id": evid, "sign": sign}).to_string();
47
48 let qrurl = format!(
49 "https://st.music.163.com/encrypt-pages?qrCode={}&verifyToken={}&verifyId={}&verifyType={}¶ms={}",
50 qr_code, token, vid, verify_type, params_str
51 );
52
53 Ok(ApiResponse {
54 status: 200,
55 body: json!({
56 "code": 200,
57 "data": {
58 "qrCode": qr_code,
59 "qrurl": qrurl,
60 "qrimg": ""
61 }
62 }),
63 cookie: vec![],
64 })
65 }
66}