openrtb_native1/
event_tracking_method.rs

1/// 7.7 Event Tracking Methods Table
2#[derive(Debug, PartialEq, Eq, Clone, Copy)]
3pub enum EventTrackingMethod {
4    /// Image-pixel tracking - URL provided will be inserted as a 1x1 pixel at the time of the
5    /// event.
6    Img,
7    /// Javascript-based tracking - URL provided will be inserted as a js tag at the time of the
8    /// event.
9    Js,
10    /// Could include custom measurement companies such as moat, doubleverify, IAS, etc - in this
11    /// case additional elements will often be passed
12    ExchangeSpecific(i32),
13}
14
15crate::impl_enum_serde!(
16    #[exchange(ident = ExchangeSpecific, greater = 500)]
17    EventTrackingMethod {
18        Img = 1,
19        Js = 2,
20    }
21);
22
23#[cfg(test)]
24mod test {
25    use super::*;
26
27    #[test]
28    fn json() -> serde_json::Result<()> {
29        assert!(serde_json::from_str::<EventTrackingMethod>("0").is_err());
30        assert!(serde_json::from_str::<EventTrackingMethod>("500").is_err());
31
32        let json = "[1,2,501]";
33        let e1: Vec<EventTrackingMethod> = serde_json::from_str(json)?;
34        assert_eq!(serde_json::to_string(&e1)?, json);
35        assert_eq!(
36            e1,
37            vec![
38                EventTrackingMethod::Img,
39                EventTrackingMethod::Js,
40                EventTrackingMethod::ExchangeSpecific(501),
41            ]
42        );
43
44        Ok(())
45    }
46}