cloudreve_api/api/v3/
aria2.rs1use crate::api::v3::models::*;
4use crate::api::v3::ApiV3Client;
5use crate::Error;
6
7impl ApiV3Client {
8 pub async fn create_download(&self, request: &Aria2CreateRequest<'_>) -> Result<(), Error> {
10 let response: ApiResponse<()> = self.post("/aria2/url", request).await?;
11 if response.code == 0 {
12 Ok(())
13 } else {
14 Err(Error::Api {
15 code: response.code,
16 message: response.msg,
17 })
18 }
19 }
20
21 pub async fn list_downloading(&self) -> Result<Vec<Aria2Task>, Error> {
23 let response: ApiResponse<Vec<Aria2Task>> = self.get("/aria2/downloading").await?;
24 match response.data {
25 Some(tasks) => Ok(tasks),
26 None => Err(Error::Api {
27 code: response.code,
28 message: response.msg,
29 }),
30 }
31 }
32
33 pub async fn list_finished(&self) -> Result<Vec<Aria2Task>, Error> {
35 let response: ApiResponse<Vec<Aria2Task>> = self.get("/aria2/finished").await?;
36 match response.data {
37 Some(tasks) => Ok(tasks),
38 None => Err(Error::Api {
39 code: response.code,
40 message: response.msg,
41 }),
42 }
43 }
44
45 pub async fn delete_task(&self, gid: &str) -> Result<(), Error> {
47 let response: ApiResponse<()> = self.delete(&format!("/aria2/task/{}", gid)).await?;
48 if response.code == 0 {
49 Ok(())
50 } else {
51 Err(Error::Api {
52 code: response.code,
53 message: response.msg,
54 })
55 }
56 }
57}