diff --git a/cloudevents-sdk-actix-web/src/server_request.rs b/cloudevents-sdk-actix-web/src/server_request.rs index ec6d484..a640dd8 100644 --- a/cloudevents-sdk-actix-web/src/server_request.rs +++ b/cloudevents-sdk-actix-web/src/server_request.rs @@ -4,8 +4,8 @@ use actix_web::web::{Bytes, BytesMut}; use actix_web::{web, HttpMessage, HttpRequest}; use cloudevents::event::SpecVersion; use cloudevents::message::{ - BinaryDeserializer, BinarySerializer, Encoding, MessageAttributeValue, - MessageDeserializer, StructuredDeserializer, StructuredSerializer, Result + BinaryDeserializer, BinarySerializer, Encoding, MessageAttributeValue, MessageDeserializer, + Result, StructuredDeserializer, StructuredSerializer, }; use cloudevents::{message, Event}; use futures::StreamExt; @@ -24,10 +24,7 @@ impl HttpRequestDeserializer<'_> { } impl<'a> BinaryDeserializer for HttpRequestDeserializer<'a> { - fn deserialize_binary>( - self, - mut visitor: V, - ) -> Result { + fn deserialize_binary>(self, mut visitor: V) -> Result { if self.encoding() != Encoding::BINARY { return Err(message::Error::WrongEncoding {}); } @@ -78,10 +75,7 @@ impl<'a> BinaryDeserializer for HttpRequestDeserializer<'a> { } impl<'a> StructuredDeserializer for HttpRequestDeserializer<'a> { - fn deserialize_structured>( - self, - visitor: V, - ) -> Result { + fn deserialize_structured>(self, visitor: V) -> Result { if self.encoding() != Encoding::STRUCTURED { return Err(message::Error::WrongEncoding {}); } diff --git a/cloudevents-sdk-actix-web/src/server_response.rs b/cloudevents-sdk-actix-web/src/server_response.rs index ee44dbb..9ddc672 100644 --- a/cloudevents-sdk-actix-web/src/server_response.rs +++ b/cloudevents-sdk-actix-web/src/server_response.rs @@ -4,8 +4,7 @@ use actix_web::http::{HeaderName, HeaderValue}; use actix_web::HttpResponse; use cloudevents::event::SpecVersion; use cloudevents::message::{ - BinaryDeserializer, BinarySerializer, MessageAttributeValue, Result, - StructuredSerializer, + BinaryDeserializer, BinarySerializer, MessageAttributeValue, Result, StructuredSerializer, }; use cloudevents::Event; use std::str::FromStr; diff --git a/cloudevents-sdk-reqwest/src/client_request.rs b/cloudevents-sdk-reqwest/src/client_request.rs index c7520ca..24fa27c 100644 --- a/cloudevents-sdk-reqwest/src/client_request.rs +++ b/cloudevents-sdk-reqwest/src/client_request.rs @@ -1,8 +1,7 @@ use super::headers; use cloudevents::event::SpecVersion; use cloudevents::message::{ - BinaryDeserializer, BinarySerializer, MessageAttributeValue, - Result, StructuredSerializer, + BinaryDeserializer, BinarySerializer, MessageAttributeValue, Result, StructuredSerializer, }; use cloudevents::Event; use reqwest::RequestBuilder; @@ -64,10 +63,7 @@ impl StructuredSerializer for RequestSerializer { } /// Method to transform an incoming [`HttpRequest`] to [`Event`] -pub fn event_to_request( - event: Event, - request_builder: RequestBuilder, -) -> Result { +pub fn event_to_request(event: Event, request_builder: RequestBuilder) -> Result { BinaryDeserializer::deserialize_binary(event, RequestSerializer::new(request_builder)) } @@ -76,10 +72,10 @@ mod tests { use super::*; use mockito::{mock, Matcher}; + use cloudevents::message::StructuredDeserializer; use cloudevents::EventBuilder; use serde_json::json; use url::Url; - use cloudevents::message::StructuredDeserializer; #[tokio::test] async fn test_request() { @@ -164,11 +160,12 @@ mod tests { let client = reqwest::Client::new(); StructuredDeserializer::deserialize_structured( input, - RequestSerializer::new(client.post(&url)) - ).unwrap() - .send() - .await - .unwrap(); + RequestSerializer::new(client.post(&url)), + ) + .unwrap() + .send() + .await + .unwrap(); m.assert(); } diff --git a/cloudevents-sdk-reqwest/src/client_response.rs b/cloudevents-sdk-reqwest/src/client_response.rs index a0de227..58beb3c 100644 --- a/cloudevents-sdk-reqwest/src/client_response.rs +++ b/cloudevents-sdk-reqwest/src/client_response.rs @@ -1,11 +1,14 @@ use super::headers; -use reqwest::Response; -use cloudevents::event::SpecVersion; -use cloudevents::message::{BinaryDeserializer, BinarySerializer, Encoding, MessageAttributeValue, MessageDeserializer, StructuredDeserializer, StructuredSerializer, Result, Error}; -use cloudevents::{message, Event}; -use std::convert::TryFrom; use bytes::Bytes; +use cloudevents::event::SpecVersion; +use cloudevents::message::{ + BinaryDeserializer, BinarySerializer, Encoding, Error, MessageAttributeValue, + MessageDeserializer, Result, StructuredDeserializer, StructuredSerializer, +}; +use cloudevents::{message, Event}; use reqwest::header::{HeaderMap, HeaderName}; +use reqwest::Response; +use std::convert::TryFrom; /// Wrapper for [`Response`] that implements [`MessageDeserializer`] trait pub struct ResponseDeserializer { @@ -20,10 +23,7 @@ impl ResponseDeserializer { } impl BinaryDeserializer for ResponseDeserializer { - fn deserialize_binary>( - self, - mut visitor: V, - ) -> Result { + fn deserialize_binary>(self, mut visitor: V) -> Result { if self.encoding() != Encoding::BINARY { return Err(message::Error::WrongEncoding {}); } @@ -38,10 +38,10 @@ impl BinaryDeserializer for ResponseDeserializer { .get(&spec_version) .unwrap(); - for (hn, hv) in - self.headers.iter().filter(|(hn, _)| { - headers::SPEC_VERSION_HEADER.ne(hn) && hn.as_str().starts_with("ce-") - }) + for (hn, hv) in self + .headers + .iter() + .filter(|(hn, _)| headers::SPEC_VERSION_HEADER.ne(hn) && hn.as_str().starts_with("ce-")) { let name = &hn.as_str()["ce-".len()..]; @@ -74,10 +74,7 @@ impl BinaryDeserializer for ResponseDeserializer { } impl StructuredDeserializer for ResponseDeserializer { - fn deserialize_structured>( - self, - visitor: V, - ) -> Result { + fn deserialize_structured>(self, visitor: V) -> Result { if self.encoding() != Encoding::STRUCTURED { return Err(message::Error::WrongEncoding {}); } @@ -92,21 +89,22 @@ impl MessageDeserializer for ResponseDeserializer { .map(|r| r.ok()) .flatten() .map(|e| e.starts_with("application/cloudevents+json")), - self.headers.get::<&'static HeaderName>(&headers::SPEC_VERSION_HEADER) + self.headers + .get::<&'static HeaderName>(&headers::SPEC_VERSION_HEADER), ) { (Some(true), _) => Encoding::STRUCTURED, (_, Some(_)) => Encoding::BINARY, - _ => Encoding::UNKNOWN + _ => Encoding::UNKNOWN, } } } /// Method to transform an incoming [`Response`] to [`Event`] -pub async fn response_to_event( - res: Response, -) -> Result { +pub async fn response_to_event(res: Response) -> Result { let h = res.headers().to_owned(); - let b = res.bytes().await.map_err(|e| Error::Other {source: Box::new(e)})?; + let b = res.bytes().await.map_err(|e| Error::Other { + source: Box::new(e), + })?; MessageDeserializer::into_event(ResponseDeserializer::new(h, b)) } @@ -118,8 +116,8 @@ mod tests { use cloudevents::EventBuilder; use serde_json::json; - use url::Url; use std::str::FromStr; + use url::Url; #[tokio::test] async fn test_response() { @@ -141,10 +139,7 @@ mod tests { .build(); let client = reqwest::Client::new(); - let res = client.get(&url) - .send() - .await - .unwrap(); + let res = client.get(&url).send().await.unwrap(); let resp = response_to_event(res).await.unwrap(); assert_eq!(expected, resp); @@ -174,12 +169,8 @@ mod tests { .extension("someint", "10") .build(); - let client = reqwest::Client::new(); - let res = client.get(&url) - .send() - .await - .unwrap(); + let res = client.get(&url).send().await.unwrap(); let resp = response_to_event(res).await.unwrap(); assert_eq!(expected, resp); @@ -199,15 +190,15 @@ mod tests { let url = mockito::server_url(); let _m = mock("GET", "/") .with_status(200) - .with_header("content-type", "application/cloudevents+json; charset=utf-8") + .with_header( + "content-type", + "application/cloudevents+json; charset=utf-8", + ) .with_body(serde_json::to_string(&expected).unwrap()) .create(); let client = reqwest::Client::new(); - let res = client.get(&url) - .send() - .await - .unwrap(); + let res = client.get(&url).send().await.unwrap(); let resp = response_to_event(res).await.unwrap(); assert_eq!(expected, resp); diff --git a/cloudevents-sdk-reqwest/src/lib.rs b/cloudevents-sdk-reqwest/src/lib.rs index e2e115c..ced4d20 100644 --- a/cloudevents-sdk-reqwest/src/lib.rs +++ b/cloudevents-sdk-reqwest/src/lib.rs @@ -6,4 +6,4 @@ mod client_response; pub use client_request::event_to_request; pub use client_request::RequestSerializer; pub use client_response::response_to_event; -pub use client_response::ResponseDeserializer; \ No newline at end of file +pub use client_response::ResponseDeserializer; diff --git a/src/event/message.rs b/src/event/message.rs index f4fc3b1..762d945 100644 --- a/src/event/message.rs +++ b/src/event/message.rs @@ -3,8 +3,8 @@ use super::Event; use super::{Attributes, AttributesReader}; use crate::event::SpecVersion; use crate::message::{ - BinaryDeserializer, BinarySerializer, Result, MessageAttributeValue, - StructuredDeserializer, StructuredSerializer, + BinaryDeserializer, BinarySerializer, MessageAttributeValue, Result, StructuredDeserializer, + StructuredSerializer, }; impl StructuredDeserializer for Event { @@ -15,10 +15,7 @@ impl StructuredDeserializer for Event { } impl BinaryDeserializer for Event { - fn deserialize_binary>( - self, - mut visitor: V, - ) -> Result { + fn deserialize_binary>(self, mut visitor: V) -> Result { visitor = visitor.set_spec_version(self.get_specversion())?; visitor = self.attributes.deserialize_attributes(visitor)?; for (k, v) in self.extensions.into_iter() { @@ -37,25 +34,15 @@ impl BinaryDeserializer for Event { } pub(crate) trait AttributesDeserializer { - fn deserialize_attributes>( - self, - visitor: V, - ) -> Result; + fn deserialize_attributes>(self, visitor: V) -> Result; } pub(crate) trait AttributesSerializer { - fn serialize_attribute( - &mut self, - name: &str, - value: MessageAttributeValue, - ) -> Result<()>; + fn serialize_attribute(&mut self, name: &str, value: MessageAttributeValue) -> Result<()>; } impl AttributesDeserializer for Attributes { - fn deserialize_attributes>( - self, - visitor: V, - ) -> Result { + fn deserialize_attributes>(self, visitor: V) -> Result { match self { Attributes::V03(v03) => v03.deserialize_attributes(visitor), Attributes::V10(v10) => v10.deserialize_attributes(visitor), @@ -64,11 +51,7 @@ impl AttributesDeserializer for Attributes { } impl AttributesSerializer for Attributes { - fn serialize_attribute( - &mut self, - name: &str, - value: MessageAttributeValue, - ) -> Result<()> { + fn serialize_attribute(&mut self, name: &str, value: MessageAttributeValue) -> Result<()> { match self { Attributes::V03(v03) => v03.serialize_attribute(name, value), Attributes::V10(v10) => v10.serialize_attribute(name, value), diff --git a/src/event/v03/message.rs b/src/event/v03/message.rs index 11a8bcd..4d7ee54 100644 --- a/src/event/v03/message.rs +++ b/src/event/v03/message.rs @@ -1,13 +1,8 @@ -use crate::message::{ - BinarySerializer, Result, Error, MessageAttributeValue, -}; +use crate::message::{BinarySerializer, Error, MessageAttributeValue, Result}; use std::convert::TryInto; impl crate::event::message::AttributesDeserializer for super::Attributes { - fn deserialize_attributes>( - self, - mut visitor: V, - ) -> Result { + fn deserialize_attributes>(self, mut visitor: V) -> Result { visitor = visitor.set_attribute("id", MessageAttributeValue::String(self.id))?; visitor = visitor.set_attribute("type", MessageAttributeValue::String(self.ty))?; visitor = visitor.set_attribute("source", MessageAttributeValue::UriRef(self.source))?; @@ -30,18 +25,15 @@ impl crate::event::message::AttributesDeserializer for super::Attributes { )?; } if self.time.is_some() { - visitor = visitor.set_attribute("time", MessageAttributeValue::DateTime(self.time.unwrap()))?; + visitor = visitor + .set_attribute("time", MessageAttributeValue::DateTime(self.time.unwrap()))?; } Ok(visitor) } } impl crate::event::message::AttributesSerializer for super::Attributes { - fn serialize_attribute( - &mut self, - name: &str, - value: MessageAttributeValue, - ) -> Result<()> { + fn serialize_attribute(&mut self, name: &str, value: MessageAttributeValue) -> Result<()> { match name { "id" => self.id = value.to_string(), "type" => self.ty = value.to_string(), diff --git a/src/event/v10/message.rs b/src/event/v10/message.rs index 7e71304..191c5d9 100644 --- a/src/event/v10/message.rs +++ b/src/event/v10/message.rs @@ -1,13 +1,8 @@ -use crate::message::{ - BinarySerializer, Error, MessageAttributeValue, Result, -}; +use crate::message::{BinarySerializer, Error, MessageAttributeValue, Result}; use std::convert::TryInto; impl crate::event::message::AttributesDeserializer for super::Attributes { - fn deserialize_attributes>( - self, - mut visitor: V, - ) -> Result { + fn deserialize_attributes>(self, mut visitor: V) -> Result { visitor = visitor.set_attribute("id", MessageAttributeValue::String(self.id))?; visitor = visitor.set_attribute("type", MessageAttributeValue::String(self.ty))?; visitor = visitor.set_attribute("source", MessageAttributeValue::UriRef(self.source))?; @@ -30,18 +25,15 @@ impl crate::event::message::AttributesDeserializer for super::Attributes { )?; } if self.time.is_some() { - visitor = visitor.set_attribute("time", MessageAttributeValue::DateTime(self.time.unwrap()))?; + visitor = visitor + .set_attribute("time", MessageAttributeValue::DateTime(self.time.unwrap()))?; } Ok(visitor) } } impl crate::event::message::AttributesSerializer for super::Attributes { - fn serialize_attribute( - &mut self, - name: &str, - value: MessageAttributeValue, - ) -> Result<()> { + fn serialize_attribute(&mut self, name: &str, value: MessageAttributeValue) -> Result<()> { match name { "id" => self.id = value.to_string(), "type" => self.ty = value.to_string(), diff --git a/src/message/deserializer.rs b/src/message/deserializer.rs index 07a0242..cc52d69 100644 --- a/src/message/deserializer.rs +++ b/src/message/deserializer.rs @@ -1,4 +1,4 @@ -use super::{BinarySerializer, Encoding, StructuredSerializer, Result}; +use super::{BinarySerializer, Encoding, Result, StructuredSerializer}; use crate::Event; pub trait StructuredDeserializer @@ -19,10 +19,7 @@ pub trait BinaryDeserializer where Self: Sized, { - fn deserialize_binary>( - self, - serializer: V, - ) -> Result; + fn deserialize_binary>(self, serializer: V) -> Result; fn into_event(self) -> Result { self.deserialize_binary(Event::default()) @@ -39,10 +36,7 @@ where self.deserialize_to(Event::default()) } - fn deserialize_to_binary>( - self, - serializer: T, - ) -> Result { + fn deserialize_to_binary>(self, serializer: T) -> Result { if self.encoding() == Encoding::BINARY { return self.deserialize_binary(serializer); } diff --git a/src/message/serializer.rs b/src/message/serializer.rs index 831aef7..ea3b27b 100644 --- a/src/message/serializer.rs +++ b/src/message/serializer.rs @@ -5,7 +5,10 @@ pub trait StructuredSerializer { fn set_structured_event(self, bytes: Vec) -> Result; } -pub trait BinarySerializer where Self: Sized { +pub trait BinarySerializer +where + Self: Sized, +{ fn set_spec_version(self, spec_version: SpecVersion) -> Result; fn set_attribute(self, name: &str, value: MessageAttributeValue) -> Result; diff --git a/tests/message.rs b/tests/message.rs index bb7a1c5..001499a 100644 --- a/tests/message.rs +++ b/tests/message.rs @@ -1,7 +1,7 @@ mod test_data; use cloudevents::message::{ - BinaryDeserializer, BinarySerializer, Error, MessageAttributeValue, - StructuredDeserializer, Result, + BinaryDeserializer, BinarySerializer, Error, MessageAttributeValue, Result, + StructuredDeserializer, }; use test_data::*;