Skip to main content

ncm_api_rs/api/
api.rs

1use super::Query;
2use crate::error::Result;
3/// 通用 API 代理接口
4/// 对应 Node.js module/api.js
5use crate::request::{ApiClient, ApiResponse, CryptoType};
6use serde_json::json;
7
8impl ApiClient {
9    /// 通用 API 代理接口,允许调用任意 API 路径
10    /// 对应 /api
11    pub async fn api(&self, query: &Query) -> Result<ApiResponse> {
12        let uri = query.get_or("uri", "");
13        let data_str = query.get_or("data", "{}");
14        let data: serde_json::Value = serde_json::from_str(&data_str).unwrap_or_else(|_| json!({}));
15        let crypto_str = query.get_or("crypto", "");
16        let crypto = CryptoType::from(crypto_str.as_str());
17        self.request(&uri, data, query.to_option(crypto)).await
18    }
19}