box_open_sdk/managers/
file_watermarks.rs1use crate::internal::path_escape;
4use crate::runtime::{self, Error};
5
6pub struct FileWatermarksManager {
8 session: std::sync::Arc<runtime::Client>,
9}
10
11impl FileWatermarksManager {
12 pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
13 Self { session }
14 }
15
16 pub async fn get_file_watermark(
17 &self,
18 file_id: String,
19 ) -> Result<crate::models::schemas::Watermark, Error> {
20 let mut url = self.session.base_url("api");
21 url.push_str("/files");
22 url.push('/');
23 let seg = path_escape(&file_id);
24 url.push_str(&seg);
25 url.push_str("/watermark");
26 let req = self.session.new_request("GET", &url);
27 let resp = self.session.fetch(req).await?;
28 let data = runtime::response_bytes(&resp)?;
29 Ok(serde_json::from_slice(&data)?)
30 }
31
32 pub async fn update_file_watermark(
33 &self,
34 file_id: String,
35 body: crate::models::schemas::UpdateFileWatermarkRequest,
36 ) -> Result<crate::models::schemas::Watermark, Error> {
37 let mut url = self.session.base_url("api");
38 url.push_str("/files");
39 url.push('/');
40 let seg = path_escape(&file_id);
41 url.push_str(&seg);
42 url.push_str("/watermark");
43 let mut req = self.session.new_request("PUT", &url);
44 let payload = serde_json::to_vec(&body)?;
45 req = runtime::with_json_body(req, &payload);
46 let resp = self.session.fetch(req).await?;
47 let data = runtime::response_bytes(&resp)?;
48 Ok(serde_json::from_slice(&data)?)
49 }
50
51 pub async fn delete_file_watermark(&self, file_id: String) -> Result<(), Error> {
52 let mut url = self.session.base_url("api");
53 url.push_str("/files");
54 url.push('/');
55 let seg = path_escape(&file_id);
56 url.push_str(&seg);
57 url.push_str("/watermark");
58 let req = self.session.new_request("DELETE", &url);
59 let _ = self.session.fetch(req).await?;
60 Ok(())
61 }
62}