Skip to content

Commit f6770b4

Browse files
authored
Improve api of module cloudevents-sdk-reqwest (cloudevents#57)
* wip improve_api Signed-off-by: Pranav Bhatt <[email protected]> * improved cloudevent-sdk-reqwest api Signed-off-by: Pranav Bhatt <[email protected]> Signed-off-by: Pranav Bhatt <[email protected]> * improve_api finalise#1 Signed-off-by: Pranav Bhatt <[email protected]> Signed-off-by: Pranav Bhatt <[email protected]> * improve_api(reqwest) finalise#2 Signed-off-by: Pranav Bhatt <[email protected]> * improve_api(reqwest) finalise#2 Signed-off-by: Pranav Bhatt <[email protected]> Signed-off-by: Pranav Bhatt <[email protected]> * improve_api(reqwest) finalise#2 Signed-off-by: Pranav Bhatt <[email protected]> Signed-off-by: Pranav Bhatt <[email protected]> * improve_api(reqwest) finalise#3 Signed-off-by: Pranav Bhatt <[email protected]> * improve_api(reqwest) finalise#4 Signed-off-by: Pranav Bhatt <[email protected]> * issue with example Signed-off-by: Pranav Bhatt <[email protected]> * tested api calls within rust Signed-off-by: Pranav Bhatt <[email protected]> * tested api calls within rust#2 Signed-off-by: Pranav Bhatt <[email protected]> * improve_api reqwest finalise Signed-off-by: Pranav Bhatt <[email protected]>
1 parent 7c8206b commit f6770b4

File tree

5 files changed

+67
-12
lines changed

5 files changed

+67
-12
lines changed

cloudevents-sdk-reqwest/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ readme = "README.md"
1212
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
1313

1414
[dependencies]
15+
async-trait = "^0.1.33"
1516
cloudevents-sdk = { version = "0.1.0", path = ".." }
1617
lazy_static = "1.4.0"
1718
bytes = "^0.5"

cloudevents-sdk-reqwest/src/client_request.rs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,17 @@ pub fn event_to_request(event: Event, request_builder: RequestBuilder) -> Result
6767
BinaryDeserializer::deserialize_binary(event, RequestSerializer::new(request_builder))
6868
}
6969

70+
/// Extention Trait for [`RequestBuilder`] which acts as a wrapper for the function [`event_to_request()`]
71+
pub trait RequestBuilderExt {
72+
fn event(self, event: Event) -> Result<RequestBuilder>;
73+
}
74+
75+
impl RequestBuilderExt for RequestBuilder {
76+
fn event(self, event: Event) -> Result<RequestBuilder> {
77+
event_to_request(event, self)
78+
}
79+
}
80+
7081
#[cfg(test)]
7182
mod tests {
7283
use super::*;
@@ -98,7 +109,10 @@ mod tests {
98109
.unwrap();
99110

100111
let client = reqwest::Client::new();
101-
event_to_request(input, client.post(&url))
112+
113+
client
114+
.post(&url)
115+
.event(input)
102116
.unwrap()
103117
.send()
104118
.await
@@ -132,7 +146,10 @@ mod tests {
132146
.unwrap();
133147

134148
let client = reqwest::Client::new();
135-
event_to_request(input, client.post(&url))
149+
150+
client
151+
.post(&url)
152+
.event(input)
136153
.unwrap()
137154
.send()
138155
.await

cloudevents-sdk-reqwest/src/client_response.rs

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use super::headers;
2+
use async_trait::async_trait;
23
use bytes::Bytes;
34
use cloudevents::event::SpecVersion;
45
use cloudevents::message::{
@@ -107,6 +108,19 @@ pub async fn response_to_event(res: Response) -> Result<Event> {
107108
MessageDeserializer::into_event(ResponseDeserializer::new(h, b))
108109
}
109110

111+
/// Extention Trait for [`Response`]which acts as a wrapper for the function [`request_to_event()`]
112+
#[async_trait(?Send)]
113+
pub trait ResponseExt {
114+
async fn into_event(self) -> Result<Event>;
115+
}
116+
117+
#[async_trait(?Send)]
118+
impl ResponseExt for Response {
119+
async fn into_event(self) -> Result<Event> {
120+
response_to_event(self).await
121+
}
122+
}
123+
110124
#[cfg(test)]
111125
mod tests {
112126
use super::*;
@@ -144,10 +158,16 @@ mod tests {
144158
.unwrap();
145159

146160
let client = reqwest::Client::new();
147-
let res = client.get(&url).send().await.unwrap();
161+
let res = client
162+
.get(&url)
163+
.send()
164+
.await
165+
.unwrap()
166+
.into_event()
167+
.await
168+
.unwrap();
148169

149-
let resp = response_to_event(res).await.unwrap();
150-
assert_eq!(expected, resp);
170+
assert_eq!(expected, res);
151171
}
152172

153173
#[tokio::test]
@@ -181,10 +201,16 @@ mod tests {
181201
.unwrap();
182202

183203
let client = reqwest::Client::new();
184-
let res = client.get(&url).send().await.unwrap();
204+
let res = client
205+
.get(&url)
206+
.send()
207+
.await
208+
.unwrap()
209+
.into_event()
210+
.await
211+
.unwrap();
185212

186-
let resp = response_to_event(res).await.unwrap();
187-
assert_eq!(expected, resp);
213+
assert_eq!(expected, res);
188214
}
189215

190216
#[tokio::test]
@@ -215,9 +241,15 @@ mod tests {
215241
.create();
216242

217243
let client = reqwest::Client::new();
218-
let res = client.get(&url).send().await.unwrap();
244+
let res = client
245+
.get(&url)
246+
.send()
247+
.await
248+
.unwrap()
249+
.into_event()
250+
.await
251+
.unwrap();
219252

220-
let resp = response_to_event(res).await.unwrap();
221-
assert_eq!(expected, resp);
253+
assert_eq!(expected, res);
222254
}
223255
}

cloudevents-sdk-reqwest/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ mod client_request;
44
mod client_response;
55

66
pub use client_request::event_to_request;
7+
pub use client_request::RequestBuilderExt;
78
pub use client_request::RequestSerializer;
89
pub use client_response::response_to_event;
910
pub use client_response::ResponseDeserializer;
11+
pub use client_response::ResponseExt;

example-projects/reqwest-wasm-example/src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use cloudevents::{EventBuilder, EventBuilderV10};
2+
use cloudevents_sdk_reqwest::RequestBuilderExt;
23
use wasm_bindgen::prelude::*;
34

45
#[wasm_bindgen]
@@ -16,7 +17,9 @@ pub async fn run(
1617

1718
println!("Going to send event: {:?}", event);
1819

19-
cloudevents_sdk_reqwest::event_to_request(event, reqwest::Client::new().post(&target))
20+
reqwest::Client::new()
21+
.post(&target)
22+
.event(event)
2023
.map_err(|e| e.to_string())?
2124
.header("Access-Control-Allow-Origin", "*")
2225
.send()

0 commit comments

Comments
 (0)