line-bot-sdk-messaging-api 0.1.0

This document describes LINE Messaging API.
Documentation
/*
 * LINE Messaging API
 *
 * This document describes LINE Messaging API.
 *
 * The version of the OpenAPI document: 0.0.1
 *
 * Generated by: https://openapi-generator.tech
 * Post-processed by: post-process-enums-v2.js
 */

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

/// Message enum using newtype pattern (wraps structs in Box)
/// This is automatically generated from discriminated schemas
#[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()))
    }
}

// Conversion methods from struct types to enum variants
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))
    }
}