openrtb_native1/request/
asset_value.rs1#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Clone)]
8#[serde(rename_all = "snake_case")]
9pub enum AssetValue {
10 Title(crate::request::Title),
13 Img(crate::request::Image),
16 Video(crate::request::Video),
21 Data(crate::request::Data),
24}
25
26impl AssetValue {
27 pub fn is_title(&self) -> bool {
28 self.as_title().is_some()
29 }
30
31 pub fn as_title(&self) -> Option<&crate::request::Title> {
32 match self {
33 Self::Title(title) => Some(title),
34 _ => None,
35 }
36 }
37
38 pub fn as_title_mut(&mut self) -> Option<&mut crate::request::Title> {
39 match self {
40 Self::Title(ref mut title) => Some(title),
41 _ => None,
42 }
43 }
44
45 pub fn is_image(&self) -> bool {
46 self.as_image().is_some()
47 }
48
49 pub fn as_image(&self) -> Option<&crate::request::Image> {
50 match self {
51 Self::Img(image) => Some(image),
52 _ => None,
53 }
54 }
55
56 pub fn as_image_mut(&mut self) -> Option<&mut crate::request::Image> {
57 match self {
58 Self::Img(ref mut image) => Some(image),
59 _ => None,
60 }
61 }
62
63 pub fn is_video(&self) -> bool {
64 self.as_video().is_some()
65 }
66
67 pub fn as_video(&self) -> Option<&crate::request::Video> {
68 match self {
69 Self::Video(video) => Some(video),
70 _ => None,
71 }
72 }
73
74 pub fn as_video_mut(&mut self) -> Option<&mut crate::request::Video> {
75 match self {
76 Self::Video(ref mut video) => Some(video),
77 _ => None,
78 }
79 }
80
81 pub fn is_data(&self) -> bool {
82 self.as_data().is_some()
83 }
84
85 pub fn as_data(&self) -> Option<&crate::request::Data> {
86 match self {
87 Self::Data(data) => Some(data),
88 _ => None,
89 }
90 }
91
92 pub fn as_data_mut(&mut self) -> Option<&mut crate::request::Data> {
93 match self {
94 Self::Data(ref mut data) => Some(data),
95 _ => None,
96 }
97 }
98}
99
100#[cfg(test)]
101mod test {
102 use super::*;
103
104 #[test]
105 fn json() -> serde_json::Result<()> {
106 let json = r#"{"title":{"len":0}}"#;
107 let o1 = AssetValue::Title(Default::default());
108 assert_eq!(serde_json::to_string(&o1)?, json);
109 assert_eq!(o1, serde_json::from_str::<AssetValue>(json)?);
110
111 Ok(())
112 }
113}