use crate::models;
use serde::{Deserialize, Serialize};
use super::{
AudioMessage, FlexMessage, ImageMessage, ImagemapMessage, LocationMessage, StickerMessage,
TemplateMessage, TextMessage, TextMessageV2, VideoMessage,
};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Message {
#[serde(rename = "audio")]
AudioMessage(AudioMessage),
#[serde(rename = "flex")]
FlexMessage(FlexMessage),
#[serde(rename = "image")]
ImageMessage(ImageMessage),
#[serde(rename = "imagemap")]
ImagemapMessage(ImagemapMessage),
#[serde(rename = "location")]
LocationMessage(LocationMessage),
#[serde(rename = "sticker")]
StickerMessage(StickerMessage),
#[serde(rename = "template")]
TemplateMessage(TemplateMessage),
#[serde(rename = "text")]
TextMessage(TextMessage),
#[serde(rename = "textV2")]
TextMessageV2(TextMessageV2),
#[serde(rename = "video")]
VideoMessage(VideoMessage),
}
impl Default for Message {
fn default() -> Self {
Self::AudioMessage(AudioMessage::default())
}
}