cdevents-sdk 0.1.2

A Rust SDK for CDEvents
Documentation
use serde::{Deserialize, Serialize};

use crate::{Id, Uri, UriReference};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(deny_unknown_fields)]
pub(crate) struct Context {
    pub(crate) version: String,
    pub(crate) id: Id,
    pub(crate) source: UriReference,
    #[serde(rename = "type")]
    pub(crate) ty: String,
    #[serde(with = "crate::serde::datetime")]
    pub(crate) timestamp: time::OffsetDateTime,
    #[serde(rename = "schemaUri", skip_serializing_if = "Option::is_none")]
    pub(crate) schema_uri: Option<Uri>,
    #[serde(rename = "chainId", skip_serializing_if = "Option::is_none")]
    pub(crate) chain_id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub(crate) links: Option<serde_json::Value>,
}

impl Default for Context {
    fn default() -> Self {
        Self {
            version: "0.3.0".into(),
            id: Id::default(),
            source: "/undef".try_into().expect("/undef is a valid uri-reference"),
            ty: "dev.cdevents.undef.undef.0.0.0".into(),
            timestamp: time::OffsetDateTime::now_utc(),
            schema_uri: None,
            chain_id: None,
            links: None,
        }
    }
}