mirror of
https://git.proxmox.com/git/proxmox
synced 2025-11-02 15:54:28 +00:00
remove chrono dependency and related code
This commit is contained in:
parent
3efc4d244b
commit
c295aa961c
@ -20,7 +20,6 @@ nix = "0.16"
|
||||
|
||||
# tools module:
|
||||
base64 = "0.12"
|
||||
chrono = "0.4"
|
||||
endian_trait = { version = "0.6", features = ["arrays"] }
|
||||
regex = "1.2"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
|
||||
@ -1,57 +1,5 @@
|
||||
//! Serialization helpers for serde
|
||||
|
||||
/// Serialize DateTime<Local> as RFC3339.
|
||||
///
|
||||
/// Usage example:
|
||||
/// ```
|
||||
/// # use proxmox::tools;
|
||||
///
|
||||
/// use chrono::{DateTime, TimeZone, Utc};
|
||||
/// use serde::{Deserialize, Serialize};
|
||||
///
|
||||
/// # #[derive(Debug)]
|
||||
/// #[derive(Deserialize, PartialEq, Serialize)]
|
||||
/// struct Foo {
|
||||
/// #[serde(with = "proxmox::tools::serde::date_time_as_rfc3339")]
|
||||
/// date: DateTime<Utc>,
|
||||
/// }
|
||||
///
|
||||
/// let obj = Foo { date: Utc.timestamp_millis(86400000) }; // random test value
|
||||
/// let json = serde_json::to_string(&obj).unwrap();
|
||||
/// assert_eq!(json, r#"{"date":"1970-01-02T00:00:00+00:00"}"#);
|
||||
///
|
||||
/// let deserialized: Foo = serde_json::from_str(&json).unwrap();
|
||||
/// assert_eq!(obj, deserialized);
|
||||
/// ```
|
||||
pub mod date_time_as_rfc3339 {
|
||||
use chrono::{DateTime, TimeZone};
|
||||
use serde::{Deserialize, Deserializer, Serializer};
|
||||
|
||||
pub fn serialize<S, Tz>(time: &DateTime<Tz>, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
Tz: TimeZone,
|
||||
Tz::Offset: std::fmt::Display,
|
||||
{
|
||||
serializer.serialize_str(&time.to_rfc3339())
|
||||
}
|
||||
|
||||
pub fn deserialize<'de, D, Tz>(deserializer: D) -> Result<DateTime<Tz>, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
Tz: TimeZone,
|
||||
DateTime<Tz>: std::str::FromStr,
|
||||
<DateTime<Tz> as std::str::FromStr>::Err: std::string::ToString,
|
||||
{
|
||||
use serde::de::Error;
|
||||
String::deserialize(deserializer).and_then(|string| {
|
||||
string
|
||||
.parse::<DateTime<Tz>>()
|
||||
.map_err(|err| Error::custom(err.to_string()))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/// Serialize Unix epoch (i64) as RFC3339.
|
||||
///
|
||||
/// Usage example:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user