diff --git a/src/status.rs b/src/status.rs index 46ad91a..411e578 100644 --- a/src/status.rs +++ b/src/status.rs @@ -7,6 +7,15 @@ use crate::sensors::Sensors; type Extensions = BTreeMap; +#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq)] +pub struct Area { + #[serde(skip_serializing_if = "Option::is_none")] + name: Option, + #[serde(skip_serializing_if = "Option::is_none")] + description: Option, + square_meters: f64, +} + #[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq)] pub struct Location { #[serde(skip_serializing_if = "Option::is_none")] @@ -15,6 +24,12 @@ pub struct Location { pub lon: f64, #[serde(skip_serializing_if = "Option::is_none")] pub timezone: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub country_code: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub hint: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub areas: Option>, } #[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq)] @@ -225,6 +240,12 @@ pub enum ApiVersion { V14, } +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +pub struct LinkedSpace { + endpoint: String, + website: String, +} + /// The main SpaceAPI status object. #[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq)] pub struct Status { @@ -260,6 +281,8 @@ pub struct Status { pub links: Option>, #[serde(skip_serializing_if = "Option::is_none")] pub membership_plans: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + pub linked_spaces: Option>, // SpaceAPI internal usage #[serde(skip_serializing_if = "Option::is_none")] @@ -968,6 +991,15 @@ mod test { }, r#"{"ustream":"http://www.ustream.tv/channel/hackspsps"}"# ); + + test_serialize!( + area, + Area { + square_meters: 120.0, + ..Area::default() + }, + r#"{"square_meters":120.0}"# + ); } mod deserialize {