relay-core 0.1.0

The core components of the Relay Protocol.
Documentation
use chrono::{DateTime, Utc};
use semver::Version;
use serde::{Deserialize, Serialize};
use uuid::Uuid;

use crate::{
    prelude::{Address, CryptoMeta},
    signed::Signed,
};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetaEnvelope {
    pub gid: Uuid,
    pub version: Version,
    pub from: Address,
    pub to: Address,
    pub timestamp: DateTime<Utc>,
    pub crypto: CryptoMeta,
    /// PrivateEnvelope
    pub payload: Signed,
}

impl From<MetaEnvelope> for MetaPayload {
    fn from(val: MetaEnvelope) -> MetaPayload {
        MetaPayload {
            gid: val.gid,
            version: val.version,
            from: val.from,
            to: val.to,
            timestamp: val.timestamp,
        }
    }
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetaPayload {
    pub gid: Uuid,
    pub version: Version,
    pub from: Address,
    pub to: Address,
    pub timestamp: DateTime<Utc>,
}