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:
parent
7c8206b4e1
commit
f6770b4591
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Reference in New Issue