cloudreve_api/api/v4/
dav.rs1use crate::api::v4::models::*;
4use crate::api::v4::uri::path_to_uri;
5use crate::api::v4::ApiV4Client;
6use crate::Error;
7
8impl ApiV4Client {
10 pub async fn list_dav_accounts(
12 &self,
13 page_size: u32,
14 next_page_token: Option<&str>,
15 ) -> Result<DavAccountsResponse, Error> {
16 let mut url = format!("/devices/dav?page_size={}", page_size);
17 if let Some(token) = next_page_token {
18 url.push_str(&format!("&next_page_token={}", token));
19 }
20
21 let response: ApiResponse<DavAccountsResponse> = self.get(&url).await?;
22 match response.data {
23 Some(data) => Ok(data),
24 None => Err(Error::InvalidResponse(format!(
25 "API returned no data for list_dav_accounts request: {:?}",
26 response
27 ))),
28 }
29 }
30
31 pub async fn create_dav_account(
33 &self,
34 request: &CreateDavAccountRequest,
35 ) -> Result<DavAccount, Error> {
36 let uri = path_to_uri(&request.uri);
38 let converted_request = CreateDavAccountRequest {
39 uri,
40 name: request.name.clone(),
41 readonly: request.readonly,
42 proxy: request.proxy,
43 disable_sys_files: request.disable_sys_files,
44 };
45
46 let response: ApiResponse<DavAccount> =
47 self.put("/devices/dav", &converted_request).await?;
48 match response.data {
49 Some(data) => Ok(data),
50 None => Err(Error::InvalidResponse(format!(
51 "API returned no data for create_dav_account request: {:?}",
52 response
53 ))),
54 }
55 }
56
57 pub async fn update_dav_account(
59 &self,
60 id: &str,
61 request: &CreateDavAccountRequest,
62 ) -> Result<DavAccount, Error> {
63 let uri = path_to_uri(&request.uri);
65 let converted_request = CreateDavAccountRequest {
66 uri,
67 name: request.name.clone(),
68 readonly: request.readonly,
69 proxy: request.proxy,
70 disable_sys_files: request.disable_sys_files,
71 };
72
73 let response: ApiResponse<DavAccount> =
74 self.patch(&format!("/devices/dav/{}", id), &converted_request).await?;
75 match response.data {
76 Some(data) => Ok(data),
77 None => Err(Error::InvalidResponse(format!(
78 "API returned no data for update_dav_account request: {:?}",
79 response
80 ))),
81 }
82 }
83
84 pub async fn delete_dav_account(&self, id: &str) -> Result<(), Error> {
86 let _: ApiResponse<()> = self.delete(&format!("/devices/dav/{}", id)).await?;
87 Ok(())
88 }
89}