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