twilight_model/channel/message/embed/
image.rs

1use 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}