use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Embed {
#[serde(default)]
pub title: Option<String>,
#[serde(rename = "type")]
pub kind: String,
#[serde(default)]
pub description: Option<String>,
#[serde(default)]
pub url: Option<String>,
#[serde(default)]
pub timestamp: Option<String>,
#[serde(default)]
pub color: Option<u32>,
#[serde(default)]
pub footer: Option<EmbedFooter>,
#[serde(default)]
pub image: Option<EmbedImage>,
#[serde(default)]
pub thumbnail: Option<EmbedThumbnail>,
#[serde(default)]
pub video: Option<EmbedVideo>,
#[serde(default)]
pub provider: Option<EmbedProvider>,
#[serde(default)]
pub author: Option<EmbedAuthor>,
#[serde(default)]
pub fields: Vec<EmbedField>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmbedFooter {
pub text: String,
#[serde(default)]
pub icon_url: Option<String>,
#[serde(default)]
pub proxy_icon_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmbedImage {
#[serde(default)]
pub name: String,
#[serde(default)]
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmbedThumbnail {
pub url: String,
#[serde(default)]
pub proxy_url: Option<String>,
#[serde(default)]
pub height: Option<u64>,
#[serde(default)]
pub width: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmbedVideo {
#[serde(default)]
pub url: String,
#[serde(default)]
pub proxy_url: Option<String>,
#[serde(default)]
pub height: u64,
#[serde(default)]
pub width: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmbedProvider {
#[serde(default)]
pub name: String,
#[serde(default)]
pub url: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmbedAuthor {
pub name: String,
#[serde(default)]
pub url: Option<String>,
#[serde(default)]
pub icon_url: Option<String>,
#[serde(default)]
pub proxy_icon_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmbedField {
pub name: String,
pub value: String,
#[serde(default)]
pub inline: bool,
}