use crate::metrics::{
Datetime, DatetimeMetric, QuantityMetric, StringMetric, TimeUnit, TimespanMetric,
};
use crate::{CommonMetricData, Lifetime};
use once_cell::sync::Lazy;
#[derive(Debug, Default)]
pub struct ClientInfoMetrics {
pub app_build: String,
pub app_display_version: String,
pub app_build_date: Datetime,
pub architecture: String,
pub os_version: String,
pub channel: Option<String>,
pub android_sdk_version: Option<String>,
pub windows_build_number: Option<i64>,
pub device_manufacturer: Option<String>,
pub device_model: Option<String>,
pub locale: Option<String>,
}
impl ClientInfoMetrics {
pub fn unknown() -> Self {
ClientInfoMetrics {
app_build: "Unknown".to_string(),
app_display_version: "Unknown".to_string(),
app_build_date: Datetime::default(),
architecture: "Unknown".to_string(),
os_version: "Unknown".to_string(),
channel: Some("Unknown".to_string()),
android_sdk_version: None,
windows_build_number: None,
device_manufacturer: None,
device_model: None,
locale: None,
}
}
}
#[allow(non_upper_case_globals)]
pub mod internal_metrics {
use super::*;
pub static app_build: Lazy<StringMetric> = Lazy::new(|| {
StringMetric::new(CommonMetricData {
name: "app_build".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static app_display_version: Lazy<StringMetric> = Lazy::new(|| {
StringMetric::new(CommonMetricData {
name: "app_display_version".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static app_build_date: Lazy<DatetimeMetric> = Lazy::new(|| {
DatetimeMetric::new(
CommonMetricData {
name: "build_date".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
},
TimeUnit::Second,
)
});
pub static app_channel: Lazy<StringMetric> = Lazy::new(|| {
StringMetric::new(CommonMetricData {
name: "app_channel".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static os_version: Lazy<StringMetric> = Lazy::new(|| {
StringMetric::new(CommonMetricData {
name: "os_version".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static architecture: Lazy<StringMetric> = Lazy::new(|| {
StringMetric::new(CommonMetricData {
name: "architecture".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static android_sdk_version: Lazy<StringMetric> = Lazy::new(|| {
StringMetric::new(CommonMetricData {
name: "android_sdk_version".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static windows_build_number: Lazy<QuantityMetric> = Lazy::new(|| {
QuantityMetric::new(CommonMetricData {
name: "windows_build_number".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static device_manufacturer: Lazy<StringMetric> = Lazy::new(|| {
StringMetric::new(CommonMetricData {
name: "device_manufacturer".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static device_model: Lazy<StringMetric> = Lazy::new(|| {
StringMetric::new(CommonMetricData {
name: "device_model".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static locale: Lazy<StringMetric> = Lazy::new(|| {
StringMetric::new(CommonMetricData {
name: "locale".into(),
category: "".into(),
send_in_pings: vec!["glean_client_info".into()],
lifetime: Lifetime::Application,
disabled: false,
..Default::default()
})
});
pub static baseline_duration: Lazy<TimespanMetric> = Lazy::new(|| {
TimespanMetric::new(
CommonMetricData {
name: "duration".into(),
category: "glean.baseline".into(),
send_in_pings: vec!["baseline".into()],
lifetime: Lifetime::Ping,
disabled: false,
..Default::default()
},
TimeUnit::Second,
)
});
}