box_open_sdk/managers/
shared_links_files.rs1use crate::internal::path_escape;
4use crate::runtime::{self, Error};
5
6#[derive(Clone, Debug, Default)]
8pub struct SharedLinksFilesGetSharedItemsOptions {
9 pub if_none_match: Option<String>,
10 pub fields: Option<Vec<String>>,
11}
12
13pub struct SharedLinksFilesManager {
15 session: std::sync::Arc<runtime::Client>,
16}
17
18impl SharedLinksFilesManager {
19 pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
20 Self { session }
21 }
22
23 pub async fn get_shared_items(
24 &self,
25 boxapi: String,
26 opts: Option<SharedLinksFilesGetSharedItemsOptions>,
27 ) -> Result<crate::models::schemas::FileFull, Error> {
28 let mut url = self.session.base_url("api");
29 url.push_str("/shared_items");
30 let mut req = self.session.new_request("GET", &url);
31 req = runtime::with_header(req, "boxapi", &boxapi);
32 let opts = opts.unwrap_or_default();
33 if let Some(value) = opts.if_none_match {
34 req = runtime::with_header(req, "if-none-match", &value);
35 }
36 if let Some(value) = opts.fields {
37 req = runtime::with_query(req, "fields", &value.join(","));
38 }
39 let resp = self.session.fetch(req).await?;
40 let data = runtime::response_bytes(&resp)?;
41 Ok(serde_json::from_slice(&data)?)
42 }
43
44 pub async fn get_file_get_shared_link(
45 &self,
46 file_id: String,
47 fields: String,
48 ) -> Result<crate::models::schemas::FileFull, Error> {
49 let mut url = self.session.base_url("api");
50 url.push_str("/files");
51 url.push('/');
52 let seg = path_escape(&file_id);
53 url.push_str(&seg);
54 let mut req = self.session.new_request("GET", &url);
55 req = runtime::with_query(req, "fields", &fields);
56 let resp = self.session.fetch(req).await?;
57 let data = runtime::response_bytes(&resp)?;
58 Ok(serde_json::from_slice(&data)?)
59 }
60
61 pub async fn update_file_add_shared_link(
62 &self,
63 file_id: String,
64 fields: String,
65 body: crate::models::schemas::UpdateFileAddSharedLinkRequest,
66 ) -> Result<crate::models::schemas::FileFull, Error> {
67 let mut url = self.session.base_url("api");
68 url.push_str("/files");
69 url.push('/');
70 let seg = path_escape(&file_id);
71 url.push_str(&seg);
72 let mut req = self.session.new_request("PUT", &url);
73 req = runtime::with_query(req, "fields", &fields);
74 let payload = serde_json::to_vec(&body)?;
75 req = runtime::with_json_body(req, &payload);
76 let resp = self.session.fetch(req).await?;
77 let data = runtime::response_bytes(&resp)?;
78 Ok(serde_json::from_slice(&data)?)
79 }
80
81 pub async fn update_file_update_shared_link(
82 &self,
83 file_id: String,
84 fields: String,
85 body: crate::models::schemas::UpdateFileAddSharedLinkRequest,
86 ) -> Result<crate::models::schemas::FileFull, Error> {
87 let mut url = self.session.base_url("api");
88 url.push_str("/files");
89 url.push('/');
90 let seg = path_escape(&file_id);
91 url.push_str(&seg);
92 let mut req = self.session.new_request("PUT", &url);
93 req = runtime::with_query(req, "fields", &fields);
94 let payload = serde_json::to_vec(&body)?;
95 req = runtime::with_json_body(req, &payload);
96 let resp = self.session.fetch(req).await?;
97 let data = runtime::response_bytes(&resp)?;
98 Ok(serde_json::from_slice(&data)?)
99 }
100
101 pub async fn update_file_remove_shared_link(
102 &self,
103 file_id: String,
104 fields: String,
105 body: crate::models::schemas::UpdateFileRemoveSharedLinkRequest,
106 ) -> Result<crate::models::schemas::FileFull, Error> {
107 let mut url = self.session.base_url("api");
108 url.push_str("/files");
109 url.push('/');
110 let seg = path_escape(&file_id);
111 url.push_str(&seg);
112 let mut req = self.session.new_request("PUT", &url);
113 req = runtime::with_query(req, "fields", &fields);
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}