cloudreve_api/api/v3/
directory.rs

1//! Directory-related API endpoints for Cloudreve API v3
2
3use crate::api::v3::models::*;
4use crate::api::v3::ApiV3Client;
5use crate::Error;
6
7impl ApiV3Client {
8    /// List directory contents
9    pub async fn list_directory(&self, path: &str) -> Result<DirectoryList, Error> {
10        let encoded_path = urlencoding::encode(path);
11        let response: ApiResponse<DirectoryList> =
12            self.get(&format!("/directory{}", encoded_path)).await?;
13        match response.data {
14            Some(list) => Ok(list),
15            None => Err(Error::Api {
16                code: response.code,
17                message: response.msg,
18            }),
19        }
20    }
21
22    /// Create a directory
23    pub async fn create_directory(
24        &self,
25        request: &CreateDirectoryRequest<'_>,
26    ) -> Result<(), Error> {
27        let response: ApiResponse<()> = self.put("/directory", request).await?;
28        if response.code == 0 {
29            Ok(())
30        } else {
31            Err(Error::Api {
32                code: response.code,
33                message: response.msg,
34            })
35        }
36    }
37}