slack_morphism/api/
views.rs

1//!
2//! Support for Slack Views API methods
3//!
4
5use rsb_derive::Builder;
6use serde::{Deserialize, Serialize};
7use serde_with::skip_serializing_none;
8
9use crate::models::blocks::*;
10use crate::models::*;
11use crate::ratectl::*;
12use crate::SlackClientSession;
13use crate::{ClientResult, SlackClientHttpConnector};
14
15impl<'a, SCHC> SlackClientSession<'a, SCHC>
16where
17    SCHC: SlackClientHttpConnector + Send,
18{
19    ///
20    /// https://api.slack.com/methods/views.open
21    ///
22    pub async fn views_open(
23        &self,
24        req: &SlackApiViewsOpenRequest,
25    ) -> ClientResult<SlackApiViewsOpenResponse> {
26        self.http_session_api
27            .http_post("views.open", req, Some(&SLACK_TIER4_METHOD_CONFIG))
28            .await
29    }
30
31    ///
32    /// https://api.slack.com/methods/views.publish
33    ///
34    pub async fn views_publish(
35        &self,
36        req: &SlackApiViewsPublishRequest,
37    ) -> ClientResult<SlackApiViewsPublishResponse> {
38        self.http_session_api
39            .http_post("views.publish", req, Some(&SLACK_TIER4_METHOD_CONFIG))
40            .await
41    }
42
43    ///
44    /// https://api.slack.com/methods/views.push
45    ///
46    pub async fn views_push(
47        &self,
48        req: &SlackApiViewsPushRequest,
49    ) -> ClientResult<SlackApiViewsPushResponse> {
50        self.http_session_api
51            .http_post("views.push", req, Some(&SLACK_TIER4_METHOD_CONFIG))
52            .await
53    }
54
55    ///
56    /// https://api.slack.com/methods/views.update
57    ///
58    pub async fn views_update(
59        &self,
60        req: &SlackApiViewsUpdateRequest,
61    ) -> ClientResult<SlackApiViewsUpdateResponse> {
62        self.http_session_api
63            .http_post("views.update", req, Some(&SLACK_TIER4_METHOD_CONFIG))
64            .await
65    }
66}
67
68#[skip_serializing_none]
69#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
70pub struct SlackApiViewsOpenRequest {
71    pub trigger_id: SlackTriggerId,
72    pub view: SlackView,
73}
74
75#[skip_serializing_none]
76#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
77pub struct SlackApiViewsOpenResponse {
78    pub view: SlackStatefulView,
79}
80
81#[skip_serializing_none]
82#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
83pub struct SlackApiViewsPublishRequest {
84    pub user_id: SlackUserId,
85    pub view: SlackView,
86    pub hash: Option<String>,
87}
88
89#[skip_serializing_none]
90#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
91pub struct SlackApiViewsPublishResponse {
92    pub view: SlackStatefulView,
93}
94
95#[skip_serializing_none]
96#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
97pub struct SlackApiViewsPushRequest {
98    pub trigger_id: SlackTriggerId,
99    pub view: SlackView,
100}
101
102#[skip_serializing_none]
103#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
104pub struct SlackApiViewsPushResponse {
105    pub view: SlackStatefulView,
106}
107
108#[skip_serializing_none]
109#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
110pub struct SlackApiViewsUpdateRequest {
111    pub view: SlackView,
112    pub external_id: Option<String>,
113    pub hash: Option<String>,
114    pub view_id: Option<SlackViewId>,
115}
116
117#[skip_serializing_none]
118#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)]
119pub struct SlackApiViewsUpdateResponse {
120    pub view: SlackStatefulView,
121}