deepr-sso-oidc 0.1.5

deepr SDK for SSO using OIDC
Documentation
/// Custom serialization and deserialization config for
/// [DateTime<Utc>] to string having the format `%Y-%m-%dT%H:%M:%SZ`
///
/// ```
/// use crate::utils::serde::json_date_format;
/// use serde::{ Deserialize, Serialize };
/// ```
///
/// #[derive(Serialize, Deserialize)]
/// struct Data {
///     #[serde(with = "json_date_format")]
///     date: DateTime<Utc>
/// }
/// ```
pub mod json_date_format {
    use chrono::{DateTime, NaiveDateTime, TimeZone, Utc};
    use serde::{self, Deserialize, Deserializer, Serializer};

    use crate::constant::DATE_FORMAT;

    pub fn serialize<S>(date: &DateTime<Utc>, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        let s = date.format(DATE_FORMAT).to_string();
        serializer.serialize_str(&s)
    }

    pub fn deserialize<'de, D>(deserializer: D) -> Result<DateTime<Utc>, D::Error>
    where
        D: Deserializer<'de>,
    {
        let s = String::deserialize(deserializer)?;
        NaiveDateTime::parse_from_str(&s, DATE_FORMAT)
            .map(|dt| Utc.from_utc_datetime(&dt))
            .map_err(serde::de::Error::custom)
    }
}