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