cloudevents/binding/nats/
serializer.rs

1use crate::{
2    message::{Error, Result},
3    Event,
4};
5
6/// Helper struct containing text data bytes of JSON serialized [Event]
7///
8/// Implements [`AsRef`] so it can be directly passed to [`nats::Connection`](https://docs.rs/nats/0.21.0/nats/struct.Connection.html) methods as payload.
9pub struct NatsCloudEvent {
10    pub payload: Vec<u8>,
11}
12
13impl AsRef<[u8]> for NatsCloudEvent {
14    fn as_ref(&self) -> &[u8] {
15        self.payload.as_ref()
16    }
17}
18
19impl NatsCloudEvent {
20    pub fn from_event(event: Event) -> Result<Self> {
21        match serde_json::to_vec(&event) {
22            Ok(payload) => Ok(Self { payload }),
23            Err(e) => Err(Error::SerdeJsonError { source: e }),
24        }
25    }
26}