snarkify-sdk 0.1.0-alpha.11

Snarkify Rust SDK for Streamlined Serverless Prover Development and Deployment
Documentation
pub mod default_dt_formatter {
    use chrono::{DateTime, Utc};
    use serde::{self, Deserialize, Deserializer, Serializer};

    const FORMAT: &str = "%Y-%m-%d %H:%M:%S";

    pub fn serialize<S>(date: &DateTime<Utc>, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        let s = format!("{}", date.format(FORMAT));
        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)?;
        chrono::NaiveDateTime::parse_from_str(&s, FORMAT)
            .map_err(serde::de::Error::custom)
            .map(|naive| naive.and_utc())
    }

    #[cfg(test)]
    mod tests {
        use super::*;
        use chrono::TimeZone;
        use serde::{Deserialize, Serialize};

        #[derive(Serialize, Deserialize)]
        struct TestStruct {
            #[serde(with = "super")]
            dt: DateTime<Utc>,
        }

        #[test]
        fn test_serialization() {
            let dt = Utc.with_ymd_and_hms(2024, 3, 14, 15, 30, 0).unwrap();
            let test_struct = TestStruct { dt };

            let serialized = serde_json::to_string(&test_struct).unwrap();
            assert_eq!(serialized, r#"{"dt":"2024-03-14 15:30:00"}"#);
        }

        #[test]
        fn test_deserialization() {
            let json = r#"{"dt":"2024-03-14 15:30:00"}"#;
            let deserialized: TestStruct = serde_json::from_str(json).unwrap();

            let expected = Utc.with_ymd_and_hms(2024, 3, 14, 15, 30, 0).unwrap();
            assert_eq!(deserialized.dt, expected);
        }

        #[test]
        fn test_invalid_format() {
            let json = r#"{"dt":"2024-03-14T15:30:00Z"}"#; // Wrong format (ISO 8601)
            let result: Result<TestStruct, _> = serde_json::from_str(json);
            assert!(result.is_err());
        }

        #[test]
        fn test_invalid_date() {
            let json = r#"{"dt":"2024-13-14 15:30:00"}"#; // Invalid month
            let result: Result<TestStruct, _> = serde_json::from_str(json);
            assert!(result.is_err());
        }
    }
}