webhook-line 1.0.1

Webhook event definition of the LINE Messaging API
Documentation
/*
 * Webhook Type Definition
 *
 * Webhook event definition of the LINE Messaging API
 *
 * The version of the OpenAPI document: 1.0.0
 *
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

use super::{
    AccountLinkEvent, ActivatedEvent, BeaconEvent, BotResumedEvent, BotSuspendedEvent,
    DeactivatedEvent, FollowEvent, JoinEvent, LeaveEvent, LinkContent, MemberJoinedEvent,
    MemberLeftEvent, MembershipEvent, MessageEvent, ModuleEvent, PnpDeliveryCompletionEvent,
    PostbackEvent, ThingsEvent, UnfollowEvent, UnsendEvent, VideoPlayCompleteEvent,
};

/// Event : Webhook event
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Event {
    #[serde(rename = "accountLink")]
    AccountLinkEvent(AccountLinkEvent),
    #[serde(rename = "activated")]
    ActivatedEvent(ActivatedEvent),
    #[serde(rename = "beacon")]
    BeaconEvent(BeaconEvent),
    #[serde(rename = "botResumed")]
    BotResumedEvent(BotResumedEvent),
    #[serde(rename = "botSuspended")]
    BotSuspendedEvent(BotSuspendedEvent),
    #[serde(rename = "deactivated")]
    DeactivatedEvent(DeactivatedEvent),
    #[serde(rename = "delivery")]
    PnpDeliveryCompletionEvent(PnpDeliveryCompletionEvent),
    #[serde(rename = "follow")]
    FollowEvent(FollowEvent),
    #[serde(rename = "join")]
    JoinEvent(JoinEvent),
    #[serde(rename = "leave")]
    LeaveEvent(LeaveEvent),
    #[serde(rename = "memberJoined")]
    MemberJoinedEvent(MemberJoinedEvent),
    #[serde(rename = "memberLeft")]
    MemberLeftEvent(MemberLeftEvent),
    #[serde(rename = "membership")]
    MembershipEvent(MembershipEvent),
    #[serde(rename = "message")]
    MessageEvent(MessageEvent),
    #[serde(rename = "module")]
    ModuleEvent(ModuleEvent),
    #[serde(rename = "postback")]
    PostbackEvent(PostbackEvent),
    #[serde(rename = "things")]
    ThingsEvent(ThingsEvent),
    #[serde(rename = "unfollow")]
    UnfollowEvent(UnfollowEvent),
    #[serde(rename = "unsend")]
    UnsendEvent(UnsendEvent),
    #[serde(rename = "videoPlayComplete")]
    VideoPlayCompleteEvent(VideoPlayCompleteEvent),
}

impl Default for Event {
    fn default() -> Self {
        Self::AccountLinkEvent(AccountLinkEvent {
            r#type: Some("accountLink".to_owned()),
            source: None,
            timestamp: Default::default(),
            mode: Default::default(),
            webhook_event_id: Default::default(),
            delivery_context: Default::default(),
            reply_token: None,
            link: Box::new(LinkContent {
                result: Default::default(),
                nonce: "".to_owned(),
            }),
        })
    }
}