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
|
||||
|
||||
[dependencies]
|
||||
async-trait = "^0.1.33"
|
||||
cloudevents-sdk = { version = "0.1.0", path = ".." }
|
||||
lazy_static = "1.4.0"
|
||||
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))
|
||||
}
|
||||
|
||||
/// 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)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
@ -98,7 +109,10 @@ mod tests {
|
|||
.unwrap();
|
||||
|
||||
let client = reqwest::Client::new();
|
||||
event_to_request(input, client.post(&url))
|
||||
|
||||
client
|
||||
.post(&url)
|
||||
.event(input)
|
||||
.unwrap()
|
||||
.send()
|
||||
.await
|
||||
|
@ -132,7 +146,10 @@ mod tests {
|
|||
.unwrap();
|
||||
|
||||
let client = reqwest::Client::new();
|
||||
event_to_request(input, client.post(&url))
|
||||
|
||||
client
|
||||
.post(&url)
|
||||
.event(input)
|
||||
.unwrap()
|
||||
.send()
|
||||
.await
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use super::headers;
|
||||
use async_trait::async_trait;
|
||||
use bytes::Bytes;
|
||||
use cloudevents::event::SpecVersion;
|
||||
use cloudevents::message::{
|
||||
|
@ -107,6 +108,19 @@ pub async fn response_to_event(res: Response) -> Result<Event> {
|
|||
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)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
@ -144,10 +158,16 @@ mod tests {
|
|||
.unwrap();
|
||||
|
||||
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, resp);
|
||||
assert_eq!(expected, res);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -181,10 +201,16 @@ mod tests {
|
|||
.unwrap();
|
||||
|
||||
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, resp);
|
||||
assert_eq!(expected, res);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -215,9 +241,15 @@ mod tests {
|
|||
.create();
|
||||
|
||||
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, resp);
|
||||
assert_eq!(expected, res);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@ mod client_request;
|
|||
mod client_response;
|
||||
|
||||
pub use client_request::event_to_request;
|
||||
pub use client_request::RequestBuilderExt;
|
||||
pub use client_request::RequestSerializer;
|
||||
pub use client_response::response_to_event;
|
||||
pub use client_response::ResponseDeserializer;
|
||||
pub use client_response::ResponseExt;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use cloudevents::{EventBuilder, EventBuilderV10};
|
||||
use cloudevents_sdk_reqwest::RequestBuilderExt;
|
||||
use wasm_bindgen::prelude::*;
|
||||
|
||||
#[wasm_bindgen]
|
||||
|
@ -16,7 +17,9 @@ pub async fn run(
|
|||
|
||||
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())?
|
||||
.header("Access-Control-Allow-Origin", "*")
|
||||
.send()
|
||||
|
|
Loading…
Reference in New Issue