ncm_api_rs/api/
cloud_upload_complete.rs1use super::Query;
2use crate::error::Result;
3use crate::request::{ApiClient, ApiResponse, CryptoType};
6use serde_json::json;
7
8impl ApiClient {
9 pub async fn cloud_upload_complete_info(&self, query: &Query) -> Result<ApiResponse> {
12 let filename = query.get_or("filename", "");
13 let song = if let Some(s) = query.get("song") {
14 s.to_string()
15 } else {
16 filename
17 .rsplit_once('.')
18 .map(|(name, _)| name)
19 .unwrap_or(&filename)
20 .to_string()
21 };
22 let data = json!({
23 "md5": query.get_or("md5", ""),
24 "songid": query.get_or("songId", ""),
25 "filename": &filename,
26 "song": song,
27 "album": query.get_or("album", "未知专辑"),
28 "artist": query.get_or("artist", "未知艺术家"),
29 "bitrate": query.get_or("bitrate", "999000"),
30 "resourceId": query.get_or("resourceId", "")
31 });
32 self.request(
33 "/api/upload/cloud/info/v2",
34 data,
35 query.to_option(CryptoType::default()),
36 )
37 .await
38 }
39
40 pub async fn cloud_upload_complete_pub(&self, query: &Query) -> Result<ApiResponse> {
43 let data = json!({
44 "songid": query.get_or("songId", "")
45 });
46 self.request(
47 "/api/cloud/pub/v2",
48 data,
49 query.to_option(CryptoType::default()),
50 )
51 .await
52 }
53}