cloudreve_api/api/v3/
site.rs

1//! Site-related API endpoints for Cloudreve API v3
2
3use crate::api::v3::models::*;
4use crate::api::v3::ApiV3Client;
5use crate::api::VersionInfo;
6use crate::Error;
7use crate::VERSION;
8
9impl ApiV3Client {
10    /// Get site configuration
11    pub async fn get_site_config(&self) -> Result<SiteConfig, Error> {
12        let response: ApiResponse<SiteConfig> = self.get("/site/config").await?;
13        match response.data {
14            Some(config) => Ok(config),
15            None => Err(Error::Api {
16                code: response.code,
17                message: response.msg,
18            }),
19        }
20    }
21
22    /// Get user storage information
23    pub async fn get_user_storage(&self) -> Result<StorageInfo, Error> {
24        let response: ApiResponse<StorageInfo> = self.get("/user/storage").await?;
25        match response.data {
26            Some(storage) => Ok(storage),
27            None => Err(Error::Api {
28                code: response.code,
29                message: response.msg,
30            }),
31        }
32    }
33
34    /// Ping the server
35    pub async fn ping(&self) -> Result<String, Error> {
36        let response: ApiResponse<String> = self.get("/site/ping").await?;
37        Ok(response.msg)
38    }
39
40    /// Get API version information
41    pub async fn get_version(&self) -> Result<VersionInfo, Error> {
42        Ok(VersionInfo {
43            api_version: "v3".to_string(),
44            library_version: VERSION.to_string(),
45            server_version: "unknown".to_string(),
46        })
47    }
48
49    /// Get user settings
50    pub async fn get_user_settings(&self) -> Result<StorageInfo, Error> {
51        let response: ApiResponse<StorageInfo> = self.get("/user/setting").await?;
52        match response.data {
53            Some(settings) => Ok(settings),
54            None => Err(Error::Api {
55                code: response.code,
56                message: response.msg,
57            }),
58        }
59    }
60
61    /// Get task queue
62    pub async fn get_task_queue(&self) -> Result<Vec<Aria2Task>, Error> {
63        let response: ApiResponse<Vec<Aria2Task>> = self.get("/user/setting/tasks").await?;
64        match response.data {
65            Some(tasks) => Ok(tasks),
66            None => Err(Error::Api {
67                code: response.code,
68                message: response.msg,
69            }),
70        }
71    }
72}