Skip to main content

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