use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum Message {
TextMessage(Box<models::TextMessage>),
TextMessageV2(Box<models::TextMessageV2>),
StickerMessage(Box<models::StickerMessage>),
ImageMessage(Box<models::ImageMessage>),
VideoMessage(Box<models::VideoMessage>),
AudioMessage(Box<models::AudioMessage>),
LocationMessage(Box<models::LocationMessage>),
ImagemapMessage(Box<models::ImagemapMessage>),
TemplateMessage(Box<models::TemplateMessage>),
FlexMessage(Box<models::FlexMessage>),
CouponMessage(Box<models::CouponMessage>),
}
impl Default for Message {
fn default() -> Self {
Self::TextMessage(Box::new(Default::default()))
}
}
impl From<models::TextMessage> for Message {
fn from(value: models::TextMessage) -> Self {
Message::TextMessage(Box::new(value))
}
}
impl From<models::TextMessageV2> for Message {
fn from(value: models::TextMessageV2) -> Self {
Message::TextMessageV2(Box::new(value))
}
}
impl From<models::StickerMessage> for Message {
fn from(value: models::StickerMessage) -> Self {
Message::StickerMessage(Box::new(value))
}
}
impl From<models::ImageMessage> for Message {
fn from(value: models::ImageMessage) -> Self {
Message::ImageMessage(Box::new(value))
}
}
impl From<models::VideoMessage> for Message {
fn from(value: models::VideoMessage) -> Self {
Message::VideoMessage(Box::new(value))
}
}
impl From<models::AudioMessage> for Message {
fn from(value: models::AudioMessage) -> Self {
Message::AudioMessage(Box::new(value))
}
}
impl From<models::LocationMessage> for Message {
fn from(value: models::LocationMessage) -> Self {
Message::LocationMessage(Box::new(value))
}
}
impl From<models::ImagemapMessage> for Message {
fn from(value: models::ImagemapMessage) -> Self {
Message::ImagemapMessage(Box::new(value))
}
}
impl From<models::TemplateMessage> for Message {
fn from(value: models::TemplateMessage) -> Self {
Message::TemplateMessage(Box::new(value))
}
}
impl From<models::FlexMessage> for Message {
fn from(value: models::FlexMessage) -> Self {
Message::FlexMessage(Box::new(value))
}
}
impl From<models::CouponMessage> for Message {
fn from(value: models::CouponMessage) -> Self {
Message::CouponMessage(Box::new(value))
}
}