webhook_line/models/
event.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14use super::{
15 AccountLinkEvent, ActivatedEvent, BeaconEvent, BotResumedEvent, BotSuspendedEvent,
16 DeactivatedEvent, FollowEvent, JoinEvent, LeaveEvent, LinkContent, MemberJoinedEvent,
17 MemberLeftEvent, MembershipEvent, MessageEvent, ModuleEvent, PnpDeliveryCompletionEvent,
18 PostbackEvent, ThingsEvent, UnfollowEvent, UnsendEvent, VideoPlayCompleteEvent,
19};
20
21#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
23#[serde(tag = "type")]
24pub enum Event {
25 #[serde(rename = "accountLink")]
26 AccountLinkEvent(AccountLinkEvent),
27 #[serde(rename = "activated")]
28 ActivatedEvent(ActivatedEvent),
29 #[serde(rename = "beacon")]
30 BeaconEvent(BeaconEvent),
31 #[serde(rename = "botResumed")]
32 BotResumedEvent(BotResumedEvent),
33 #[serde(rename = "botSuspended")]
34 BotSuspendedEvent(BotSuspendedEvent),
35 #[serde(rename = "deactivated")]
36 DeactivatedEvent(DeactivatedEvent),
37 #[serde(rename = "delivery")]
38 PnpDeliveryCompletionEvent(PnpDeliveryCompletionEvent),
39 #[serde(rename = "follow")]
40 FollowEvent(FollowEvent),
41 #[serde(rename = "join")]
42 JoinEvent(JoinEvent),
43 #[serde(rename = "leave")]
44 LeaveEvent(LeaveEvent),
45 #[serde(rename = "memberJoined")]
46 MemberJoinedEvent(MemberJoinedEvent),
47 #[serde(rename = "memberLeft")]
48 MemberLeftEvent(MemberLeftEvent),
49 #[serde(rename = "membership")]
50 MembershipEvent(MembershipEvent),
51 #[serde(rename = "message")]
52 MessageEvent(MessageEvent),
53 #[serde(rename = "module")]
54 ModuleEvent(ModuleEvent),
55 #[serde(rename = "postback")]
56 PostbackEvent(PostbackEvent),
57 #[serde(rename = "things")]
58 ThingsEvent(ThingsEvent),
59 #[serde(rename = "unfollow")]
60 UnfollowEvent(UnfollowEvent),
61 #[serde(rename = "unsend")]
62 UnsendEvent(UnsendEvent),
63 #[serde(rename = "videoPlayComplete")]
64 VideoPlayCompleteEvent(VideoPlayCompleteEvent),
65}
66
67impl Default for Event {
68 fn default() -> Self {
69 Self::AccountLinkEvent(AccountLinkEvent {
70 r#type: Some("accountLink".to_owned()),
71 source: None,
72 timestamp: Default::default(),
73 mode: Default::default(),
74 webhook_event_id: Default::default(),
75 delivery_context: Default::default(),
76 reply_token: None,
77 link: Box::new(LinkContent {
78 result: Default::default(),
79 nonce: "".to_owned(),
80 }),
81 })
82 }
83}