cloudreve_api/api/v4/
site.rs

1//! Site-related API endpoints for Cloudreve API v4
2
3use crate::api::v4::ApiV4Client;
4use crate::api::v4::models::*;
5use crate::api::VersionInfo;
6use crate::Error;
7use crate::VERSION;
8
9impl ApiV4Client {
10    /// Get API version information
11    pub async fn get_version(&self) -> Result<VersionInfo, Error> {
12        Ok(VersionInfo {
13            api_version: "v4".to_string(),
14            library_version: VERSION.to_string(),
15            server_version: "unknown".to_string(),
16        })
17    }
18
19    pub async fn ping(&self) -> Result<String, Error> {
20        let response: crate::ApiResponse<String> = self.get("/site/ping").await?;
21        Ok(response.msg)
22    }
23
24    pub async fn get_site_config(&self, section: &str) -> Result<SiteConfig, Error> {
25        let endpoint = format!("/site/config/{}", section);
26        let response: crate::ApiResponse<SiteConfig> = self.get(&endpoint).await?;
27        match response.data {
28            Some(config) => Ok(config),
29            None => Err(crate::Error::Api {
30                code: response.code,
31                message: response.msg,
32            }),
33        }
34    }
35
36    pub async fn report_site_abuse(&self, request: &AbuseReportRequest<'_>) -> Result<(), Error> {
37        let response: crate::ApiResponse<()> = self.post("/site/abuse", request).await?;
38        if response.code == 0 {
39            Ok(())
40        } else {
41            Err(crate::Error::Api {
42                code: response.code,
43                message: response.msg,
44            })
45        }
46    }
47
48    pub async fn get_captcha(&self) -> Result<CaptchaResponse, Error> {
49        self.get("/site/captcha").await
50    }
51}