From 5cf622fad1d2600ed99b17ebca7e7c16534b3d22 Mon Sep 17 00:00:00 2001 From: Abdulla Abdurakhmanov Date: Sun, 21 Jun 2020 23:44:51 +0300 Subject: [PATCH] Slack Client Views API --- src/client/src/api/mod.rs | 2 + src/client/src/api/views.rs | 110 ++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 src/client/src/api/views.rs diff --git a/src/client/src/api/mod.rs b/src/client/src/api/mod.rs index 31cf7eb..0a33d80 100644 --- a/src/client/src/api/mod.rs +++ b/src/client/src/api/mod.rs @@ -6,6 +6,7 @@ mod team; mod test; mod users; mod webhook; +mod views; pub use bots::*; pub use chat::*; @@ -15,3 +16,4 @@ pub use team::*; pub use test::*; pub use users::*; pub use webhook::*; +pub use views::*; diff --git a/src/client/src/api/views.rs b/src/client/src/api/views.rs new file mode 100644 index 0000000..cda0b92 --- /dev/null +++ b/src/client/src/api/views.rs @@ -0,0 +1,110 @@ +//! +//! Support for Slack Views API methods +//! + +use rsb_derive::Builder; +use serde::{Deserialize, Serialize}; +use serde_with::skip_serializing_none; + +use crate::ClientResult; +use crate::SlackClientSession; +use slack_morphism_models::*; +use slack_morphism_models::blocks::*; + +impl<'a> SlackClientSession<'a> { + /// + /// https://api.slack.com/methods/views.open + /// + pub async fn views_open( + &self, + req: &SlackApiViewsOpenRequest, + ) -> ClientResult { + self.http_api.http_post("views.open", req).await + } + + /// + /// https://api.slack.com/methods/views.publish + /// + pub async fn views_publish( + &self, + req: &SlackApiViewsPublishRequest, + ) -> ClientResult { + self.http_api.http_post("views.publish", req).await + } + + /// + /// https://api.slack.com/methods/views.push + /// + pub async fn views_push( + &self, + req: &SlackApiViewsPushRequest, + ) -> ClientResult { + self.http_api.http_post("views.push", req).await + } + + /// + /// https://api.slack.com/methods/views.update + /// + pub async fn views_update( + &self, + req: &SlackApiViewsUpdateRequest, + ) -> ClientResult { + self.http_api.http_post("views.update", req).await + } +} + +#[skip_serializing_none] +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] +pub struct SlackApiViewsOpenRequest { + pub trigger_id: SlackTriggerId, + pub view: SlackView +} + +#[skip_serializing_none] +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] +pub struct SlackApiViewsOpenResponse { + pub view: SlackStatefulView +} + +#[skip_serializing_none] +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] +pub struct SlackApiViewsPublishRequest { + pub user_id: SlackUserId, + pub view: SlackView, + pub hash: Option +} + +#[skip_serializing_none] +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] +pub struct SlackApiViewsPublishResponse { + pub view: SlackStatefulView +} + +#[skip_serializing_none] +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] +pub struct SlackApiViewsPushRequest { + pub trigger_id: SlackTriggerId, + pub view: SlackView +} + +#[skip_serializing_none] +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] +pub struct SlackApiViewsPushResponse { + pub view: SlackStatefulView +} + +#[skip_serializing_none] +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] +pub struct SlackApiViewsUpdateRequest { + pub view: SlackView, + pub external_id: Option, + pub hash: Option, + pub view_id: Option +} + +#[skip_serializing_none] +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] +pub struct SlackApiViewsUpdateResponse { + pub view: SlackStatefulView +} +