added territory coordinates
This commit is contained in:
parent
58ec9eea15
commit
cc8299dc5c
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "torn-api"
|
name = "torn-api"
|
||||||
version = "0.5.8"
|
version = "0.5.9"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["Pyrit [2111649]"]
|
authors = ["Pyrit [2111649]"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
|
@ -47,4 +47,12 @@ pub struct Territory {
|
||||||
pub density: i16,
|
pub density: i16,
|
||||||
pub daily_respect: i16,
|
pub daily_respect: i16,
|
||||||
pub faction: i32,
|
pub faction: i32,
|
||||||
|
|
||||||
|
#[cfg(feature = "decimal")]
|
||||||
|
#[serde(deserialize_with = "de_util::string_or_decimal")]
|
||||||
|
pub coordinate_x: rust_decimal::Decimal,
|
||||||
|
|
||||||
|
#[cfg(feature = "decimal")]
|
||||||
|
#[serde(deserialize_with = "de_util::string_or_decimal")]
|
||||||
|
pub coordinate_y: rust_decimal::Decimal,
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,8 @@ where
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
Ok(None)
|
Ok(None)
|
||||||
} else {
|
} else {
|
||||||
let naive = NaiveDateTime::from_timestamp(i, 0);
|
let naive = NaiveDateTime::from_timestamp_opt(i, 0)
|
||||||
|
.ok_or_else(|| D::Error::invalid_value(Unexpected::Signed(i), &"Epoch timestamp"))?;
|
||||||
Ok(Some(DateTime::from_utc(naive, Utc)))
|
Ok(Some(DateTime::from_utc(naive, Utc)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -90,3 +91,42 @@ where
|
||||||
|
|
||||||
deserializer.deserialize_any(DumbVisitor)
|
deserializer.deserialize_any(DumbVisitor)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "decimal")]
|
||||||
|
pub(crate) fn string_or_decimal<'de, D>(deserializer: D) -> Result<rust_decimal::Decimal, D::Error>
|
||||||
|
where
|
||||||
|
D: Deserializer<'de>,
|
||||||
|
{
|
||||||
|
struct DumbVisitor;
|
||||||
|
|
||||||
|
impl<'de> Visitor<'de> for DumbVisitor {
|
||||||
|
type Value = rust_decimal::Decimal;
|
||||||
|
|
||||||
|
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||||
|
write!(formatter, "integer or float as string")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
|
||||||
|
where
|
||||||
|
E: Error,
|
||||||
|
{
|
||||||
|
Ok(v.into())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
|
||||||
|
where
|
||||||
|
E: Error,
|
||||||
|
{
|
||||||
|
Ok(v.into())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
|
||||||
|
where
|
||||||
|
E: Error,
|
||||||
|
{
|
||||||
|
rust_decimal::Decimal::from_str_exact(v).map_err(E::custom)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
deserializer.deserialize_any(DumbVisitor)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue