ene_kafka 0.1.2

Ene Kafka is an easy-to-use Rust client for Apache Kafka
Documentation
use std::collections::HashMap;

use crate::messages::kafka_message::{Headers, KafkaMessage, ToBytes};

pub trait CloudEvent<Key: ToBytes, Payload: ToBytes>:
    KafkaMessage<Key, Payload> + Sync + Send
{
    fn spec_version(&self) -> anyhow::Result<String>;
    fn event_type(&self) -> anyhow::Result<String>;
    fn event_source(&self) -> anyhow::Result<String>;
    fn event_id(&self) -> anyhow::Result<String>;
    fn event_time(&self) -> anyhow::Result<String>;
    fn event_content_type(&self) -> anyhow::Result<String>;

    fn entity_event_type() -> anyhow::Result<String>;

    fn cloud_event_headers(&self) -> anyhow::Result<Headers> {
        Ok(HashMap::from([
            (String::from("ce_specversion"), self.spec_version()?),
            (String::from("ce_type"), self.event_type()?),
            (String::from("ce_source"), self.event_source()?),
            (String::from("ce_id"), self.event_id()?),
            (String::from("ce_time"), self.event_time()?),
            (String::from("content_type"), self.event_content_type()?),
        ]))
    }
}

pub trait DeserializeFrom<Key: ToBytes, Payload: ToBytes, InputEvent: CloudEvent<Key, Payload>> {
    fn deserialize_from(event: &InputEvent) -> anyhow::Result<Self>
    where
        Self: Sized;
}

pub type EventType = String;