Improve api of module cloudevents-sdk-reqwest (#57)

* wip improve_api

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* improved cloudevent-sdk-reqwest api

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* improve_api finalise#1

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* improve_api(reqwest) finalise#2

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* improve_api(reqwest) finalise#2

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* improve_api(reqwest) finalise#2

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* improve_api(reqwest) finalise#3

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* improve_api(reqwest) finalise#4

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* issue with example

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* tested api calls within rust

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* tested api calls within rust#2

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>

* improve_api reqwest finalise

Signed-off-by: Pranav Bhatt <adpranavb2000@gmail.com>
This commit is contained in:
Pranav Bhatt 2020-06-22 19:57:05 +05:30 committed by GitHub
parent 7c8206b4e1
commit f6770b4591
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 67 additions and 12 deletions

View File

@ -12,6 +12,7 @@ readme = "README.md"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
async-trait = "^0.1.33"
cloudevents-sdk = { version = "0.1.0", path = ".." } cloudevents-sdk = { version = "0.1.0", path = ".." }
lazy_static = "1.4.0" lazy_static = "1.4.0"
bytes = "^0.5" bytes = "^0.5"

View File

@ -67,6 +67,17 @@ pub fn event_to_request(event: Event, request_builder: RequestBuilder) -> Result
BinaryDeserializer::deserialize_binary(event, RequestSerializer::new(request_builder)) BinaryDeserializer::deserialize_binary(event, RequestSerializer::new(request_builder))
} }
/// Extention Trait for [`RequestBuilder`] which acts as a wrapper for the function [`event_to_request()`]
pub trait RequestBuilderExt {
fn event(self, event: Event) -> Result<RequestBuilder>;
}
impl RequestBuilderExt for RequestBuilder {
fn event(self, event: Event) -> Result<RequestBuilder> {
event_to_request(event, self)
}
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
@ -98,7 +109,10 @@ mod tests {
.unwrap(); .unwrap();
let client = reqwest::Client::new(); let client = reqwest::Client::new();
event_to_request(input, client.post(&url))
client
.post(&url)
.event(input)
.unwrap() .unwrap()
.send() .send()
.await .await
@ -132,7 +146,10 @@ mod tests {
.unwrap(); .unwrap();
let client = reqwest::Client::new(); let client = reqwest::Client::new();
event_to_request(input, client.post(&url))
client
.post(&url)
.event(input)
.unwrap() .unwrap()
.send() .send()
.await .await

View File

@ -1,4 +1,5 @@
use super::headers; use super::headers;
use async_trait::async_trait;
use bytes::Bytes; use bytes::Bytes;
use cloudevents::event::SpecVersion; use cloudevents::event::SpecVersion;
use cloudevents::message::{ use cloudevents::message::{
@ -107,6 +108,19 @@ pub async fn response_to_event(res: Response) -> Result<Event> {
MessageDeserializer::into_event(ResponseDeserializer::new(h, b)) MessageDeserializer::into_event(ResponseDeserializer::new(h, b))
} }
/// Extention Trait for [`Response`]which acts as a wrapper for the function [`request_to_event()`]
#[async_trait(?Send)]
pub trait ResponseExt {
async fn into_event(self) -> Result<Event>;
}
#[async_trait(?Send)]
impl ResponseExt for Response {
async fn into_event(self) -> Result<Event> {
response_to_event(self).await
}
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
@ -144,10 +158,16 @@ mod tests {
.unwrap(); .unwrap();
let client = reqwest::Client::new(); let client = reqwest::Client::new();
let res = client.get(&url).send().await.unwrap(); let res = client
.get(&url)
.send()
.await
.unwrap()
.into_event()
.await
.unwrap();
let resp = response_to_event(res).await.unwrap(); assert_eq!(expected, res);
assert_eq!(expected, resp);
} }
#[tokio::test] #[tokio::test]
@ -181,10 +201,16 @@ mod tests {
.unwrap(); .unwrap();
let client = reqwest::Client::new(); let client = reqwest::Client::new();
let res = client.get(&url).send().await.unwrap(); let res = client
.get(&url)
.send()
.await
.unwrap()
.into_event()
.await
.unwrap();
let resp = response_to_event(res).await.unwrap(); assert_eq!(expected, res);
assert_eq!(expected, resp);
} }
#[tokio::test] #[tokio::test]
@ -215,9 +241,15 @@ mod tests {
.create(); .create();
let client = reqwest::Client::new(); let client = reqwest::Client::new();
let res = client.get(&url).send().await.unwrap(); let res = client
.get(&url)
.send()
.await
.unwrap()
.into_event()
.await
.unwrap();
let resp = response_to_event(res).await.unwrap(); assert_eq!(expected, res);
assert_eq!(expected, resp);
} }
} }

View File

@ -4,6 +4,8 @@ mod client_request;
mod client_response; mod client_response;
pub use client_request::event_to_request; pub use client_request::event_to_request;
pub use client_request::RequestBuilderExt;
pub use client_request::RequestSerializer; pub use client_request::RequestSerializer;
pub use client_response::response_to_event; pub use client_response::response_to_event;
pub use client_response::ResponseDeserializer; pub use client_response::ResponseDeserializer;
pub use client_response::ResponseExt;

View File

@ -1,4 +1,5 @@
use cloudevents::{EventBuilder, EventBuilderV10}; use cloudevents::{EventBuilder, EventBuilderV10};
use cloudevents_sdk_reqwest::RequestBuilderExt;
use wasm_bindgen::prelude::*; use wasm_bindgen::prelude::*;
#[wasm_bindgen] #[wasm_bindgen]
@ -16,7 +17,9 @@ pub async fn run(
println!("Going to send event: {:?}", event); println!("Going to send event: {:?}", event);
cloudevents_sdk_reqwest::event_to_request(event, reqwest::Client::new().post(&target)) reqwest::Client::new()
.post(&target)
.event(event)
.map_err(|e| e.to_string())? .map_err(|e| e.to_string())?
.header("Access-Control-Allow-Origin", "*") .header("Access-Control-Allow-Origin", "*")
.send() .send()