1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
use rsb_derive::Builder; use serde::{Deserialize, Serialize}; use serde_with::skip_serializing_none; use crate::blocks::*; use crate::common::*; use crate::events::*; use crate::messages::*; #[allow(clippy::large_enum_variant)] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(tag = "type")] pub enum SlackPushEvent { #[serde(rename = "url_verification")] UrlVerification(SlackUrlVerificationEvent), #[serde(rename = "event_callback")] EventCallback(SlackEventCallback), #[serde(rename = "app_rate_limited")] AppRateLimited(SlackAppRateLimitedEvent), } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackUrlVerificationEvent { pub challenge: String, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackAppRateLimitedEvent { pub team_id: String, pub minute_rate_limited: SlackDateTime, pub api_app_id: String, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackEventCallback { pub team_id: SlackTeamId, pub api_app_id: SlackAppId, pub event: SlackEventCallbackBody, pub event_id: SlackEventId, pub event_time: SlackDateTime, pub event_context: Option<SlackEventContext>, pub authed_users: Option<Vec<SlackUserId>>, pub authorizations: Option<Vec<SlackEventAuthorization>>, } #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] #[serde(tag = "type")] pub enum SlackEventCallbackBody { #[serde(rename = "message")] Message(SlackMessageEvent), #[serde(rename = "app_home_opened")] AppHomeOpened(SlackAppHomeOpenedEvent), } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackMessageEvent { #[serde(flatten)] pub origin: SlackMessageOrigin, #[serde(flatten)] pub content: SlackMessageContent, #[serde(flatten)] pub sender: SlackMessageSender, pub subtype: Option<SlackMessageEventType>, pub hidden: Option<bool>, } #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] pub enum SlackMessageEventType { #[serde(rename = "bot_message")] BotMessage, #[serde(rename = "me_message")] MeMessage, #[serde(rename = "channel_join")] ChannelJoin, #[serde(rename = "bot_add")] BotAdd, #[serde(rename = "bot_remove")] BotRemove, #[serde(rename = "channel_topic")] ChannelTopic, #[serde(rename = "channel_purpose")] ChannelPurpose, #[serde(rename = "channel_name")] ChannelName, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackAppHomeOpenedEvent { pub user: SlackUserId, pub channel: SlackChannelId, pub tab: String, pub view: Option<SlackView>, }