atlassian_rust_api/jira/endpoints/avatars/
store_temporary_avatar.rs1use std::sync::Arc;
2
3use crate::{Jira, Result, rest_client::RestClient, web::{Endpoint, QueryParams}};
4
5#[derive(Debug, Clone)]
6pub struct StoreTemporaryAvatarBuilder {
7 client: Arc<RestClient>,
8 request: StoreTemporaryAvatarRequest,
9}
10
11#[derive(Debug, Clone, Default)]
12struct StoreTemporaryAvatarRequest {
13 avatar_type: String,
14 filename: String,
15 size: u64,
16}
17
18impl Endpoint for StoreTemporaryAvatarRequest {
19 fn endpoint(&self) -> std::borrow::Cow<'static, str> {
20 format!("avatar/{}/temporary", &self.avatar_type).into()
21 }
22
23 fn parameters(&self) -> QueryParams<'_> {
24 let mut params = QueryParams::default();
25 params
26 .push("filename", &self.filename)
27 .push("size", self.size);
28 params
29 }
30}
31
32impl StoreTemporaryAvatarBuilder {
33 fn new(client: Arc<RestClient>) -> StoreTemporaryAvatarBuilder {
34 StoreTemporaryAvatarBuilder { client, request: StoreTemporaryAvatarRequest::default() }
35 }
36
37 fn avatar_type(mut self, avatar_type: impl Into<String>) -> StoreTemporaryAvatarBuilder {
38 self.request.avatar_type = avatar_type.into();
39 self
40 }
41
42 fn filename(mut self, filename: impl Into<String>) -> StoreTemporaryAvatarBuilder {
43 self.request.filename = filename.into();
44 self
45 }
46
47 fn size(mut self, size: u64) -> StoreTemporaryAvatarBuilder {
48 self.request.size = size.into();
49 self
50 }
51
52 pub async fn send(self) -> Result<serde_json::Value> {
53 self.client.post(self.request).await
54 }
55}
56
57impl Jira {
58 pub fn store_temporary_avatar(
60 &self,
61 avatar_type: impl Into<String>,
62 filename: impl Into<String>,
63 size: u64,
64 ) -> StoreTemporaryAvatarBuilder {
65 StoreTemporaryAvatarBuilder::new(Arc::clone(&self.client))
66 .avatar_type(avatar_type)
67 .filename(filename)
68 .size(size)
69 }
70}