twilight_model/channel/message/embed/
image.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
4pub struct EmbedImage {
5 #[serde(skip_serializing_if = "Option::is_none")]
6 pub height: Option<u64>,
7 #[serde(skip_serializing_if = "Option::is_none")]
8 pub proxy_url: Option<String>,
9 pub url: String,
10 #[serde(skip_serializing_if = "Option::is_none")]
11 pub width: Option<u64>,
12}
13
14#[cfg(test)]
15mod tests {
16 use super::EmbedImage;
17 use serde_test::Token;
18
19 #[test]
20 fn embed_image() {
21 let value = EmbedImage {
22 height: Some(1440),
23 proxy_url: Some("https://cdn.example.com/1-hash.png".to_owned()),
24 url: "https://example.com/1.png".to_owned(),
25 width: Some(2560),
26 };
27
28 serde_test::assert_tokens(
29 &value,
30 &[
31 Token::Struct {
32 name: "EmbedImage",
33 len: 4,
34 },
35 Token::Str("height"),
36 Token::Some,
37 Token::U64(1440),
38 Token::Str("proxy_url"),
39 Token::Some,
40 Token::Str("https://cdn.example.com/1-hash.png"),
41 Token::Str("url"),
42 Token::Str("https://example.com/1.png"),
43 Token::Str("width"),
44 Token::Some,
45 Token::U64(2560),
46 Token::StructEnd,
47 ],
48 );
49 }
50}