slack_morphism/api/
pins.rs

1use rsb_derive::Builder;
2use rvstruct::ValueStruct;
3use serde::{Deserialize, Serialize};
4use serde_with::skip_serializing_none;
5
6use crate::{
7    ratectl::SLACK_TIER2_METHOD_CONFIG, ClientResult, SlackChannelId, SlackClientHttpConnector,
8    SlackClientSession, SlackMessage, SlackPin, SlackTs,
9};
10
11impl<'a, SCHC> SlackClientSession<'a, SCHC>
12where
13    SCHC: SlackClientHttpConnector + Send,
14{
15    ///
16    /// https://api.slack.com/methods/pins.add
17    ///
18    pub async fn pins_add(
19        &self,
20        req: &SlackApiPinsAddRequest,
21    ) -> ClientResult<SlackApiPinsAddResponse> {
22        self.http_session_api
23            .http_post("pins.add", req, Some(&SLACK_TIER2_METHOD_CONFIG))
24            .await
25    }
26
27    ///
28    /// https://api.slack.com/methods/pins.list
29    ///
30    pub async fn pins_list(
31        &self,
32        req: &SlackApiPinsListRequest,
33    ) -> ClientResult<SlackApiPinsListResponse> {
34        self.http_session_api
35            .http_get(
36                "pins.list",
37                &[("channel", Some(&req.channel.value()))],
38                Some(&SLACK_TIER2_METHOD_CONFIG),
39            )
40            .await
41    }
42
43    ///
44    /// https://api.slack.com/methods/pins.remove
45    ///
46    pub async fn pins_remove(
47        &self,
48        req: &SlackApiPinsRemoveRequest,
49    ) -> ClientResult<SlackApiPinsRemoveResponse> {
50        self.http_session_api
51            .http_post("pins.remove", req, Some(&SLACK_TIER2_METHOD_CONFIG))
52            .await
53    }
54}
55
56#[skip_serializing_none]
57#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
58pub struct SlackApiPinsAddRequest {
59    pub channel: SlackChannelId,
60    pub timestamp: SlackTs,
61}
62
63#[skip_serializing_none]
64#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
65pub struct SlackApiPinsAddResponse {}
66
67#[skip_serializing_none]
68#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
69pub struct SlackApiPinsListRequest {
70    pub channel: SlackChannelId,
71}
72
73#[skip_serializing_none]
74#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
75pub struct SlackApiPinsListResponse {
76    pub items: Vec<SlackPin>,
77}
78
79#[skip_serializing_none]
80#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
81pub struct SlackApiPinsRemoveRequest {
82    pub channel: SlackChannelId,
83    pub timestamp: SlackTs,
84}
85
86#[skip_serializing_none]
87#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
88pub struct SlackApiPinsRemoveResponse {}