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}