1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
use serde_derive::Serialize; #[derive(Serialize, Debug)] pub struct ImagemapMessage { #[serde(rename = "baseUrl")] pub base_url: String, #[serde(rename = "altText")] pub alt_text: String, #[serde(rename = "baseSize")] pub base_size: BaseSize, #[serde(skip_serializing_if = "Option::is_none")] pub video: Option<Video>, pub actions: Vec<Actions>, } #[derive(Serialize, Debug)] pub struct BaseSize { pub height: i64, pub width: i64, } #[derive(Serialize, Debug)] pub struct Video { #[serde(rename = "originalContentUrl")] pub original_content_url: String, #[serde(rename = "previewImageUrl")] pub preview_image_url: String, pub area: Area, #[serde(rename = "externalLink")] pub external_link: ExternalLink, } #[derive(Serialize, Debug)] pub struct Area { pub x: i64, pub y: i64, pub height: i64, pub width: i64, } #[derive(Serialize, Debug)] pub struct ExternalLink { #[serde(rename = "linkUri")] pub link_uri: String, pub label: String, } #[derive(Serialize, Debug)] pub struct Actions { #[serde(flatten)] r#type: ActionsType, #[serde(default)] label: String, area: Area, } #[derive(Serialize, Debug)] pub enum ActionsType { Uri { #[serde(rename = "linkUri")] link_uri: String, }, Message { text: String, }, }