slack_morphism/api/
pins.rs1use 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 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 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 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 {}