twilight_model/channel/message/embed/
image.rs1use serde::{Deserialize, Serialize};
2
3use super::EmbedMediaFlags;
4
5#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
6pub struct EmbedImage {
7 #[serde(skip_serializing_if = "Option::is_none")]
8 pub height: Option<u64>,
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub proxy_url: Option<String>,
11 pub url: String,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub width: Option<u64>,
14 #[serde(skip_serializing_if = "Option::is_none")]
18 pub content_type: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub placeholder: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub placeholder_version: Option<u64>,
25 #[serde(skip_serializing_if = "Option::is_none")]
27 pub flags: Option<EmbedMediaFlags>,
28}
29
30#[cfg(test)]
31mod tests {
32 use super::EmbedImage;
33 use super::EmbedMediaFlags;
34 use serde_test::Token;
35
36 #[test]
37 fn embed_image() {
38 let value = EmbedImage {
39 height: Some(1440),
40 proxy_url: Some("https://cdn.example.com/1-hash.png".to_owned()),
41 url: "https://example.com/1.png".to_owned(),
42 width: Some(2560),
43 content_type: Some("image/png".to_owned()),
44 placeholder: Some("zSeKDQIoCLiHeIKeiLyfrsBqCIaYaHJ2Vg".to_owned()),
46 placeholder_version: Some(1),
47 flags: Some(EmbedMediaFlags::IS_ANIMATED),
48 };
49
50 serde_test::assert_tokens(
51 &value,
52 &[
53 Token::Struct {
54 name: "EmbedImage",
55 len: 8,
56 },
57 Token::Str("height"),
58 Token::Some,
59 Token::U64(1440),
60 Token::Str("proxy_url"),
61 Token::Some,
62 Token::Str("https://cdn.example.com/1-hash.png"),
63 Token::Str("url"),
64 Token::Str("https://example.com/1.png"),
65 Token::Str("width"),
66 Token::Some,
67 Token::U64(2560),
68 Token::Str("content_type"),
69 Token::Some,
70 Token::Str("image/png"),
71 Token::Str("placeholder"),
72 Token::Some,
73 Token::Str("zSeKDQIoCLiHeIKeiLyfrsBqCIaYaHJ2Vg"),
74 Token::Str("placeholder_version"),
75 Token::Some,
76 Token::U64(1),
77 Token::Str("flags"),
78 Token::Some,
79 Token::U64(32),
80 Token::StructEnd,
81 ],
82 );
83 }
84}