box_open_sdk/managers/
web_links.rs1use crate::internal::path_escape;
4use crate::runtime::{self, Error};
5
6#[derive(Clone, Debug, Default)]
8pub struct WebLinksGetOptions {
9 pub boxapi: Option<String>,
10}
11
12pub struct WebLinksManager {
14 session: std::sync::Arc<runtime::Client>,
15}
16
17impl WebLinksManager {
18 pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
19 Self { session }
20 }
21
22 pub async fn create(
23 &self,
24 body: crate::models::schemas::WebLinkCreateRequest,
25 ) -> Result<crate::models::schemas::WebLink, Error> {
26 let mut url = self.session.base_url("api");
27 url.push_str("/web_links");
28 let mut req = self.session.new_request("POST", &url);
29 let payload = serde_json::to_vec(&body)?;
30 req = runtime::with_json_body(req, &payload);
31 let resp = self.session.fetch(req).await?;
32 let data = runtime::response_bytes(&resp)?;
33 Ok(serde_json::from_slice(&data)?)
34 }
35
36 pub async fn get(
37 &self,
38 web_link_id: String,
39 opts: Option<WebLinksGetOptions>,
40 ) -> Result<crate::models::schemas::WebLink, Error> {
41 let mut url = self.session.base_url("api");
42 url.push_str("/web_links");
43 url.push('/');
44 let seg = path_escape(&web_link_id);
45 url.push_str(&seg);
46 let mut req = self.session.new_request("GET", &url);
47 let opts = opts.unwrap_or_default();
48 if let Some(value) = opts.boxapi {
49 req = runtime::with_header(req, "boxapi", &value);
50 }
51 let resp = self.session.fetch(req).await?;
52 let data = runtime::response_bytes(&resp)?;
53 Ok(serde_json::from_slice(&data)?)
54 }
55
56 pub async fn update(
57 &self,
58 web_link_id: String,
59 body: crate::models::schemas::WebLinkUpdateRequest,
60 ) -> Result<crate::models::schemas::WebLink, Error> {
61 let mut url = self.session.base_url("api");
62 url.push_str("/web_links");
63 url.push('/');
64 let seg = path_escape(&web_link_id);
65 url.push_str(&seg);
66 let mut req = self.session.new_request("PUT", &url);
67 let payload = serde_json::to_vec(&body)?;
68 req = runtime::with_json_body(req, &payload);
69 let resp = self.session.fetch(req).await?;
70 let data = runtime::response_bytes(&resp)?;
71 Ok(serde_json::from_slice(&data)?)
72 }
73
74 pub async fn delete(&self, web_link_id: String) -> Result<(), Error> {
75 let mut url = self.session.base_url("api");
76 url.push_str("/web_links");
77 url.push('/');
78 let seg = path_escape(&web_link_id);
79 url.push_str(&seg);
80 let req = self.session.new_request("DELETE", &url);
81 let _ = self.session.fetch(req).await?;
82 Ok(())
83 }
84}