box_open_sdk/managers/
invites.rs1use crate::internal::path_escape;
4use crate::runtime::{self, Error};
5
6#[derive(Clone, Debug, Default)]
8pub struct InvitesCreateOptions {
9 pub fields: Option<Vec<String>>,
10}
11
12#[derive(Clone, Debug, Default)]
14pub struct InvitesGetOptions {
15 pub fields: Option<Vec<String>>,
16}
17
18pub struct InvitesManager {
20 session: std::sync::Arc<runtime::Client>,
21}
22
23impl InvitesManager {
24 pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
25 Self { session }
26 }
27
28 pub async fn create(
29 &self,
30 body: crate::models::schemas::InviteCreateRequest,
31 opts: Option<InvitesCreateOptions>,
32 ) -> Result<crate::models::schemas::Invite, Error> {
33 let mut url = self.session.base_url("api");
34 url.push_str("/invites");
35 let mut req = self.session.new_request("POST", &url);
36 let opts = opts.unwrap_or_default();
37 if let Some(value) = opts.fields {
38 req = runtime::with_query(req, "fields", &value.join(","));
39 }
40 let payload = serde_json::to_vec(&body)?;
41 req = runtime::with_json_body(req, &payload);
42 let resp = self.session.fetch(req).await?;
43 let data = runtime::response_bytes(&resp)?;
44 Ok(serde_json::from_slice(&data)?)
45 }
46
47 pub async fn get(
48 &self,
49 invite_id: String,
50 opts: Option<InvitesGetOptions>,
51 ) -> Result<crate::models::schemas::Invite, Error> {
52 let mut url = self.session.base_url("api");
53 url.push_str("/invites");
54 url.push('/');
55 let seg = path_escape(&invite_id);
56 url.push_str(&seg);
57 let mut req = self.session.new_request("GET", &url);
58 let opts = opts.unwrap_or_default();
59 if let Some(value) = opts.fields {
60 req = runtime::with_query(req, "fields", &value.join(","));
61 }
62 let resp = self.session.fetch(req).await?;
63 let data = runtime::response_bytes(&resp)?;
64 Ok(serde_json::from_slice(&data)?)
65 }
66}