Skip to content

Commit fd2a97f

Browse files
committed
reworked http request in sink for cloud-event
1 parent c075f96 commit fd2a97f

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

cdviz-collector/src/sinks/http.rs

+23-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use cdevents_sdk::cloudevents::BuilderExt;
22
use cloudevents::{EventBuilder, EventBuilderV10};
3+
use cloudevents::binding::reqwest::RequestBuilderExt;
34
use reqwest::Url;
45
use reqwest_middleware::{ClientBuilder, ClientWithMiddleware};
56
use serde::{Deserialize, Serialize};
@@ -48,25 +49,34 @@ impl Sink for HttpSink {
4849
async fn send(&self, msg: &Message) -> Result<()> {
4950
let cd_event = msg.cdevent.clone();
5051
// convert CdEvent to cloudevents
51-
let event_result = EventBuilderV10::new().with_cdevent(cd_event).unwrap().build();
52-
52+
let event_result = EventBuilderV10::new().with_cdevent(cd_event.clone());
5353
match event_result {
54-
Ok(value) => {
55-
let resp = self
56-
.client
54+
Ok(event_builder) => {
55+
let event_result = event_builder.build();
56+
let value = event_result.map_err(|e| {
57+
tracing::warn!(error = ?e, "Failed to build event")
58+
})?;
59+
reqwest::Client::new()
5760
.post(self.dest.clone())
58-
.json(&value)
61+
.event(value)
62+
.map_err(|e| {
63+
tracing::warn!(error = ?e, "Failed to build request-builder")
64+
})?
65+
.header("Access-Control-Allow-Origin", "*")
5966
.send()
60-
.await?;
61-
if !resp.status().is_success() {
62-
tracing::warn!(
63-
cdevent = ?serde_json::to_value(&value)?,
64-
http_status = ?resp.status(),
65-
"failed to send event")
66-
}
67+
.await
68+
.map_err(|e| {
69+
tracing::warn!(error = ?e, "Failed to get response")
70+
})?;
6771
}
6872
Err(err) => {
6973
tracing::warn!(error = ?err, "Failed to convert to cloudevents");
74+
// In error case, send the original event
75+
self.client
76+
.post(self.dest.clone())
77+
.json(&cd_event)
78+
.send()
79+
.await?;
7080
}
7181
};
7282
Ok(())

0 commit comments

Comments
 (0)