use super::Query;
use crate::error::Result;
use crate::request::{ApiClient, ApiResponse, CryptoType};
use serde_json::json;
impl ApiClient {
pub async fn cloud_upload_complete_info(&self, query: &Query) -> Result<ApiResponse> {
let filename = query.get_or("filename", "");
let song = if let Some(s) = query.get("song") {
s.to_string()
} else {
filename
.rsplit_once('.')
.map(|(name, _)| name)
.unwrap_or(&filename)
.to_string()
};
let data = json!({
"md5": query.get_or("md5", ""),
"songid": query.get_or("songId", ""),
"filename": &filename,
"song": song,
"album": query.get_or("album", "未知专辑"),
"artist": query.get_or("artist", "未知艺术家"),
"bitrate": query.get_or("bitrate", "999000"),
"resourceId": query.get_or("resourceId", "")
});
self.request(
"/api/upload/cloud/info/v2",
data,
query.to_option(CryptoType::default()),
)
.await
}
pub async fn cloud_upload_complete_pub(&self, query: &Query) -> Result<ApiResponse> {
let data = json!({
"songid": query.get_or("songId", "")
});
self.request(
"/api/cloud/pub/v2",
data,
query.to_option(CryptoType::default()),
)
.await
}
}