r6tracker/types/
stat.rs

1use std::collections::HashMap;
2use url::Url;
3
4#[derive(Debug, serde::Deserialize, serde::Serialize)]
5pub struct Stat {
6    pub metadata: Metadata,
7    pub value: f64,
8    pub percentile: Option<f32>,
9    pub rank: Option<u32>,
10
11    #[serde(rename = "displayValue")]
12    pub display_value: String,
13
14    #[serde(flatten)]
15    pub unknown: HashMap<String, serde_json::Value>,
16}
17
18impl Stat {
19    pub fn name(&self) -> &str {
20        &self.metadata.name
21    }
22
23    pub fn icon_url(&self) -> Option<&Url> {
24        self.metadata.icon_url.as_ref()
25    }
26}
27
28#[derive(Debug, serde::Deserialize, serde::Serialize)]
29pub struct Metadata {
30    pub key: String,
31    pub name: String,
32
33    #[serde(rename = "categoryKey")]
34    pub category_key: String,
35
36    #[serde(rename = "categoryName")]
37    pub category_name: String,
38
39    pub description: Option<String>,
40
41    #[serde(rename = "isReversed")]
42    pub is_reversed: bool,
43
44    #[serde(rename = "iconUrl")]
45    pub icon_url: Option<Url>,
46
47    #[serde(flatten)]
48    pub unknown: HashMap<String, serde_json::Value>,
49}