Skip to main content

box_open_sdk/managers/
avatars.rs

1// Code generated by box-gantry. DO NOT EDIT.
2
3use crate::internal::path_escape;
4use crate::runtime::{self, Error};
5
6/// Operations for the "avatars" API area.
7pub struct AvatarsManager {
8    session: std::sync::Arc<runtime::Client>,
9}
10
11impl AvatarsManager {
12    pub(crate) fn new(session: std::sync::Arc<runtime::Client>) -> Self {
13        Self { session }
14    }
15
16    pub async fn get_user_avatar(&self, user_id: String) -> Result<runtime::Stream, Error> {
17        let mut url = self.session.base_url("api");
18        url.push_str("/users");
19        url.push('/');
20        let seg = path_escape(&user_id);
21        url.push_str(&seg);
22        url.push_str("/avatar");
23        let req = self.session.new_request("GET", &url);
24        let resp = self.session.fetch(req).await?;
25        Ok(runtime::response_stream(&resp))
26    }
27
28    pub async fn create_user_avatar(
29        &self,
30        user_id: String,
31        body: crate::models::schemas::CreateUserAvatarRequest,
32    ) -> Result<crate::models::schemas::UserAvatar, Error> {
33        let mut url = self.session.base_url("api");
34        url.push_str("/users");
35        url.push('/');
36        let seg = path_escape(&user_id);
37        url.push_str(&seg);
38        url.push_str("/avatar");
39        let mut req = self.session.new_request("POST", &url);
40        let attributes = serde_json::to_vec(&body)?;
41        req = runtime::with_multipart_body(req, &attributes, "file", runtime::Stream::empty());
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 delete_user_avatar(&self, user_id: String) -> Result<(), Error> {
48        let mut url = self.session.base_url("api");
49        url.push_str("/users");
50        url.push('/');
51        let seg = path_escape(&user_id);
52        url.push_str(&seg);
53        url.push_str("/avatar");
54        let req = self.session.new_request("DELETE", &url);
55        let _ = self.session.fetch(req).await?;
56        Ok(())
57    }
58}