Skip to main content

box_open_sdk/managers/
user_collaborations.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 [`UserCollaborationsManager::get_collaboration`].
7#[derive(Clone, Debug, Default)]
8pub struct UserCollaborationsGetCollaborationOptions {
9    pub fields: Option<Vec<String>>,
10}
11
12/// Optional parameters for [`UserCollaborationsManager::create_collaborations`].
13#[derive(Clone, Debug, Default)]
14pub struct UserCollaborationsCreateCollaborationsOptions {
15    pub fields: Option<Vec<String>>,
16    pub notify: Option<bool>,
17}
18
19/// Operations for the "user_collaborations" API area.
20pub struct UserCollaborationsManager {
21    session: std::sync::Arc<runtime::Client>,
22}
23
24impl UserCollaborationsManager {
25    pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
26        Self { session }
27    }
28
29    pub async fn get_collaboration(
30        &self,
31        collaboration_id: String,
32        opts: Option<UserCollaborationsGetCollaborationOptions>,
33    ) -> Result<crate::models::schemas::Collaboration, Error> {
34        let mut url = self.session.base_url("api");
35        url.push_str("/collaborations");
36        url.push('/');
37        let seg = path_escape(&collaboration_id);
38        url.push_str(&seg);
39        let mut req = self.session.new_request("GET", &url);
40        let opts = opts.unwrap_or_default();
41        if let Some(value) = opts.fields {
42            req = runtime::with_query(req, "fields", &value.join(","));
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 update_collaboration(
50        &self,
51        collaboration_id: String,
52        body: crate::models::schemas::UpdateCollaborationRequest,
53    ) -> Result<crate::models::schemas::Collaboration, Error> {
54        let mut url = self.session.base_url("api");
55        url.push_str("/collaborations");
56        url.push('/');
57        let seg = path_escape(&collaboration_id);
58        url.push_str(&seg);
59        let mut req = self.session.new_request("PUT", &url);
60        let payload = serde_json::to_vec(&body)?;
61        req = runtime::with_json_body(req, &payload);
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 delete_collaboration(&self, collaboration_id: String) -> Result<(), Error> {
68        let mut url = self.session.base_url("api");
69        url.push_str("/collaborations");
70        url.push('/');
71        let seg = path_escape(&collaboration_id);
72        url.push_str(&seg);
73        let req = self.session.new_request("DELETE", &url);
74        let _ = self.session.fetch(req).await?;
75        Ok(())
76    }
77
78    pub async fn create_collaborations(
79        &self,
80        body: crate::models::schemas::CreateCollaborationsRequest,
81        opts: Option<UserCollaborationsCreateCollaborationsOptions>,
82    ) -> Result<crate::models::schemas::Collaboration, Error> {
83        let mut url = self.session.base_url("api");
84        url.push_str("/collaborations");
85        let mut req = self.session.new_request("POST", &url);
86        let opts = opts.unwrap_or_default();
87        if let Some(value) = opts.fields {
88            req = runtime::with_query(req, "fields", &value.join(","));
89        }
90        if let Some(value) = opts.notify {
91            req = runtime::with_query(req, "notify", &value.to_string());
92        }
93        let payload = serde_json::to_vec(&body)?;
94        req = runtime::with_json_body(req, &payload);
95        let resp = self.session.fetch(req).await?;
96        let data = runtime::response_bytes(&resp)?;
97        Ok(serde_json::from_slice(&data)?)
98    }
99}