Skip to main content

box_open_sdk/managers/
folder_metadata.rs

1// Code generated by box-gantry. DO NOT EDIT.
2
3use crate::internal::path_escape;
4use crate::runtime::{self, Error};
5
6/// Optional parameters for [`FolderMetadataManager::list_folder_metadata`].
7#[derive(Clone, Debug, Default)]
8pub struct FolderMetadataListFolderMetadataOptions {
9    pub view: Option<String>,
10}
11
12/// Operations for the "folder_metadata" API area.
13pub struct FolderMetadataManager {
14    session: std::sync::Arc<runtime::Client>,
15}
16
17impl FolderMetadataManager {
18    pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
19        Self { session }
20    }
21
22    pub async fn list_folder_metadata(
23        &self,
24        folder_id: String,
25        opts: Option<FolderMetadataListFolderMetadataOptions>,
26    ) -> Result<crate::models::schemas::Metadatas, Error> {
27        let mut url = self.session.base_url("api");
28        url.push_str("/folders");
29        url.push('/');
30        let seg = path_escape(&folder_id);
31        url.push_str(&seg);
32        url.push_str("/metadata");
33        let mut req = self.session.new_request("GET", &url);
34        let opts = opts.unwrap_or_default();
35        if let Some(value) = opts.view {
36            req = runtime::with_query(req, "view", &value);
37        }
38        let resp = self.session.fetch(req).await?;
39        let data = runtime::response_bytes(&resp)?;
40        Ok(serde_json::from_slice(&data)?)
41    }
42
43    pub async fn get_folder_metadata(
44        &self,
45        folder_id: String,
46        scope: crate::models::schemas::GetFileIdMetadataIdScope,
47        template_key: String,
48    ) -> Result<crate::models::schemas::MetadataFull, Error> {
49        let mut url = self.session.base_url("api");
50        url.push_str("/folders");
51        url.push('/');
52        let seg = path_escape(&folder_id);
53        url.push_str(&seg);
54        url.push_str("/metadata");
55        url.push('/');
56        let seg = path_escape(&scope.0);
57        url.push_str(&seg);
58        url.push('/');
59        let seg = path_escape(&template_key);
60        url.push_str(&seg);
61        let req = self.session.new_request("GET", &url);
62        let resp = self.session.fetch(req).await?;
63        let data = runtime::response_bytes(&resp)?;
64        Ok(serde_json::from_slice(&data)?)
65    }
66
67    pub async fn update_folder_metadata(
68        &self,
69        folder_id: String,
70        scope: crate::models::schemas::GetFileIdMetadataIdScope,
71        template_key: String,
72        body: Vec<crate::models::schemas::UpdateFileMetadataRequest>,
73    ) -> Result<crate::models::schemas::MetadataFull, Error> {
74        let mut url = self.session.base_url("api");
75        url.push_str("/folders");
76        url.push('/');
77        let seg = path_escape(&folder_id);
78        url.push_str(&seg);
79        url.push_str("/metadata");
80        url.push('/');
81        let seg = path_escape(&scope.0);
82        url.push_str(&seg);
83        url.push('/');
84        let seg = path_escape(&template_key);
85        url.push_str(&seg);
86        let mut req = self.session.new_request("PUT", &url);
87        let payload = serde_json::to_vec(&body)?;
88        req = runtime::with_json_body(req, &payload);
89        let resp = self.session.fetch(req).await?;
90        let data = runtime::response_bytes(&resp)?;
91        Ok(serde_json::from_slice(&data)?)
92    }
93
94    pub async fn create_folder_metadata(
95        &self,
96        folder_id: String,
97        scope: crate::models::schemas::GetFileIdMetadataIdScope,
98        template_key: String,
99        body: std::collections::HashMap<String, serde_json::Value>,
100    ) -> Result<crate::models::schemas::MetadataFull, Error> {
101        let mut url = self.session.base_url("api");
102        url.push_str("/folders");
103        url.push('/');
104        let seg = path_escape(&folder_id);
105        url.push_str(&seg);
106        url.push_str("/metadata");
107        url.push('/');
108        let seg = path_escape(&scope.0);
109        url.push_str(&seg);
110        url.push('/');
111        let seg = path_escape(&template_key);
112        url.push_str(&seg);
113        let mut req = self.session.new_request("POST", &url);
114        let payload = serde_json::to_vec(&body)?;
115        req = runtime::with_json_body(req, &payload);
116        let resp = self.session.fetch(req).await?;
117        let data = runtime::response_bytes(&resp)?;
118        Ok(serde_json::from_slice(&data)?)
119    }
120
121    pub async fn delete_folder_metadata(
122        &self,
123        folder_id: String,
124        scope: crate::models::schemas::GetFileIdMetadataIdScope,
125        template_key: String,
126    ) -> Result<(), Error> {
127        let mut url = self.session.base_url("api");
128        url.push_str("/folders");
129        url.push('/');
130        let seg = path_escape(&folder_id);
131        url.push_str(&seg);
132        url.push_str("/metadata");
133        url.push('/');
134        let seg = path_escape(&scope.0);
135        url.push_str(&seg);
136        url.push('/');
137        let seg = path_escape(&template_key);
138        url.push_str(&seg);
139        let req = self.session.new_request("DELETE", &url);
140        let _ = self.session.fetch(req).await?;
141        Ok(())
142    }
143}