openrtb/v2_5/
device.rs

1// Copyright (c) 2018 The openrtb-rust authors
2//
3// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
4// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
5// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
6// option. This file may not be copied, modified, or distributed
7// except according to those terms.
8
9use super::geo::Geo;
10use serde_utils;
11
12#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
13pub struct Device {
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub ua: Option<String>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub geo: Option<Geo>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub dnt: Option<bool>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub lmt: Option<bool>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub ip: Option<String>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub ipv6: Option<String>,
26    #[serde(rename = "devicetype", skip_serializing_if = "Option::is_none")]
27    pub device_type: Option<u32>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub make: Option<String>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub model: Option<String>,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub os: Option<String>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub osv: Option<String>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub hwv: Option<String>,
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub h: Option<u64>,
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub w: Option<u64>,
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub ppi: Option<u64>,
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub pxratio: Option<f64>,
46    #[serde(
47        default,
48        skip_serializing_if = "Option::is_none",
49        serialize_with = "serde_utils::mbool_to_u8",
50        deserialize_with = "serde_utils::u8_to_mbool"
51    )]
52    pub js: Option<bool>,
53    #[serde(
54        default,
55        skip_serializing_if = "Option::is_none",
56        serialize_with = "serde_utils::mbool_to_u8",
57        deserialize_with = "serde_utils::u8_to_mbool"
58    )]
59    pub geofetch: Option<bool>,
60    #[serde(skip_serializing_if = "Option::is_none")]
61    pub flashver: Option<String>,
62    #[serde(skip_serializing_if = "Option::is_none")]
63    pub language: Option<String>,
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub carrier: Option<String>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub mccmnc: Option<String>,
68    #[serde(rename = "connectiontype", skip_serializing_if = "Option::is_none")]
69    pub connection_type: Option<u32>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub ifa: Option<String>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub didsha1: Option<String>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub didmd5: Option<String>,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub dpidsha1: Option<String>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub dpidmd5: Option<String>,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub macsha1: Option<String>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub macmd5: Option<String>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub ext: Option<serde_utils::Ext>,
86}