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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
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), #[serde(rename = "app_mention")] AppMention(SlackAppMentionEvent), #[serde(rename = "app_uninstalled")] AppUninstalled(SlackAppUninstalledEvent), } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackMessageEvent { #[serde(flatten)] pub origin: SlackMessageOrigin, #[serde(flatten)] pub content: Option<SlackMessageContent>, #[serde(flatten)] pub sender: SlackMessageSender, pub subtype: Option<SlackMessageEventType>, pub hidden: Option<bool>, pub edited: Option<SlackMessageEventEdited>, pub deleted_ts: Option<SlackTs>, } #[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, #[serde(rename = "message_changed")] MessageChanged, #[serde(rename = "message_deleted")] MessageDeleted, #[serde(rename = "tombstone")] Tombstone, #[serde(rename = "joiner_notification")] JoinerNotification, #[serde(rename = "slackbot_response")] SlackbotResponse, } #[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>, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackAppMentionEvent { pub user: SlackUserId, pub channel: SlackChannelId, #[serde(flatten)] pub content: SlackMessageContent, #[serde(flatten)] pub origin: SlackMessageOrigin, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackMessageEventEdited { pub user: SlackUserId, pub ts: SlackTs, } #[skip_serializing_none] #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Builder)] pub struct SlackAppUninstalledEvent {}