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}