1use super::Query;
2use crate::error::Result;
3use crate::request::{ApiClient, ApiResponse, CryptoType};
11use serde_json::json;
12
13impl ApiClient {
14 pub async fn cloud_upload_check(&self, query: &Query) -> Result<ApiResponse> {
17 let data = json!({
18 "bitrate": query.get_or("bitrate", "999000"),
19 "ext": query.get_or("ext", ""),
20 "length": query.get_or("length", "0").parse::<i64>().unwrap_or(0),
21 "md5": query.get_or("md5", ""),
22 "songId": query.get_or("songId", "0"),
23 "version": 1
24 });
25 self.request(
26 "/api/cloud/upload/check",
27 data,
28 query.to_option(CryptoType::default()),
29 )
30 .await
31 }
32
33 pub async fn cloud_upload_info(&self, query: &Query) -> Result<ApiResponse> {
36 let data = json!({
37 "md5": query.get_or("md5", ""),
38 "songid": query.get_or("songId", ""),
39 "filename": query.get_or("filename", ""),
40 "song": query.get_or("song", ""),
41 "album": query.get_or("album", "未知专辑"),
42 "artist": query.get_or("artist", "未知艺术家"),
43 "bitrate": query.get_or("bitrate", "999000"),
44 "resourceId": query.get_or("resourceId", "")
45 });
46 self.request(
47 "/api/upload/cloud/info/v2",
48 data,
49 query.to_option(CryptoType::default()),
50 )
51 .await
52 }
53
54 pub async fn cloud_publish(&self, query: &Query) -> Result<ApiResponse> {
57 let data = json!({
58 "songid": query.get_or("songId", "")
59 });
60 self.request(
61 "/api/cloud/pub/v2",
62 data,
63 query.to_option(CryptoType::default()),
64 )
65 .await
66 }
67}