use crate::models::serde_helpers::option_is_none_or_default;
use serde::{Deserialize, Serialize};
use super::super::{Keyboard, Media};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct InputNotify {
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub input_type: Option<i32>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub input_second: Option<i32>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct MediaInfo {
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub file_info: Option<String>,
}
impl From<Media> for MediaInfo {
fn from(media: Media) -> Self {
Self {
file_info: media.file_info,
}
}
}
impl From<MediaInfo> for Media {
fn from(media: MediaInfo) -> Self {
Self {
file_uuid: None,
file_info: media.file_info,
ttl: None,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct Stream {
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub state: Option<i32>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub id: Option<String>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub index: Option<i32>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub reset: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct PromptKeyboard {
#[serde(skip_serializing_if = "Option::is_none")]
pub keyboard: Option<Keyboard>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct ActionButton {
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub template_id: Option<i32>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub callback_data: Option<String>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub feedback: Option<bool>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub tts: Option<bool>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub re_generate: Option<bool>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub stop_generate: Option<bool>,
}