Updated to sdk-rust 0.2 (#2730)

Signed-off-by: Francesco Guardiani <francescoguard@gmail.com>
This commit is contained in:
Francesco Guardiani 2020-09-10 12:35:51 +02:00 committed by GitHub
parent 35eb9e28d2
commit 0bdea0de88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 40 deletions

View File

@ -291,9 +291,9 @@ checksum = "b585a98a234c46fc563103e9278c9391fde1f4e6850334da895d27edb9580f62"
[[package]]
name = "async-trait"
version = "0.1.31"
version = "0.1.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26c4f3195085c36ea8d24d32b2f828d23296a9370a28aa39d111f6f16bef9f3b"
checksum = "a265e3abeffdce30b2e26b7a11b222fe37c6067404001b434101457d0385eb92"
dependencies = [
"proc-macro2",
"quote",
@ -453,15 +453,14 @@ dependencies = [
[[package]]
name = "cloudevents-sdk"
version = "0.1.0"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a971dc6acd87980d58a5bab97f27dc62508bd0aa4fb057333d351c48304d556"
checksum = "7c814591b300c224c5705c7579a4c80d68aa3472c0d9f0da8c20a74ce40b4bed"
dependencies = [
"base64 0.12.1",
"chrono",
"delegate",
"hostname",
"lazy_static",
"serde",
"serde-value",
"serde_json",
@ -473,30 +472,30 @@ dependencies = [
[[package]]
name = "cloudevents-sdk-actix-web"
version = "0.1.0"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55ca203e31e58bb17bc857700a9ee696b2c599076d10896f14720b5db59071fb"
checksum = "8d0b874f8f39a3c09b9d114c4d8e9976e23e95c1a9bce7842eca3b54ca13b413"
dependencies = [
"actix-rt",
"actix-web",
"async-trait",
"bytes",
"cloudevents-sdk",
"futures",
"lazy_static",
"serde_json",
]
[[package]]
name = "cloudevents-sdk-reqwest"
version = "0.1.0"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f92f4beec5ec951c579a4a9f9d121d3936a5945242893ccc757d617f0c90f51"
checksum = "99cd21a76c14f95331e162fcf6bbafb13d02c5fd5098c1c3e0424f9dddac929c"
dependencies = [
"async-trait",
"bytes",
"cloudevents-sdk",
"lazy_static",
"reqwest",
"serde_json",
]
[[package]]

View File

@ -21,9 +21,9 @@ edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
cloudevents-sdk = "0.1.0"
cloudevents-sdk-actix-web = "0.1.0"
cloudevents-sdk-reqwest = "0.1.0"
cloudevents-sdk = "0.2.0"
cloudevents-sdk-actix-web = "0.2.0"
cloudevents-sdk-reqwest = "0.2.0"
reqwest = { version = "0.10.4", default-features = false, features = ["rustls-tls"] }
actix-web = "2"
actix-rt = "1"

View File

@ -20,34 +20,29 @@ extern crate log;
use actix_web::dev::HttpResponseBuilder;
use actix_web::http::StatusCode;
use actix_web::{post, web, App, HttpRequest, HttpResponse, HttpServer};
use cloudevents::event::EventBuilderV10;
use reqwest;
use url::Url;
use cloudevents::{EventBuilder, EventBuilderV10};
use cloudevents_sdk_actix_web::{RequestExt, HttpResponseBuilderExt};
use cloudevents_sdk_reqwest::RequestBuilderExt;
#[post("/")]
async fn reply_event(
req: HttpRequest,
payload: web::Payload,
) -> Result<HttpResponse, actix_web::Error> {
let request_event = cloudevents_sdk_actix_web::request_to_event(&req, payload).await?;
let request_event = req.into_event(payload).await?;
info!("Received Event: {:?}", request_event);
// Build response event cloning the original event and setting the new type and source
let response_event = EventBuilderV10::from(request_event)
.source(
Url::parse(
"https://github.com/knative/docs/docs/serving/samples/cloudevents/cloudevents-rust",
)
.unwrap(),
)
.source("https://github.com/knative/docs/docs/serving/samples/cloudevents/cloudevents-rust")
.ty("dev.knative.docs.sample")
.build();
.build()
// If i can't build the event, fail with internal server error
.map_err(actix_web::error::ErrorInternalServerError)?;
cloudevents_sdk_actix_web::event_to_response(
response_event,
HttpResponseBuilder::new(StatusCode::OK),
)
.await
HttpResponseBuilder::new(StatusCode::OK)
.event(response_event)
.await
}
#[post("/")]
@ -58,23 +53,20 @@ async fn forward_event(
) -> Result<HttpResponse, actix_web::Error> {
let sink_url: &str = &sink_url;
let request_event = cloudevents_sdk_actix_web::request_to_event(&req, payload).await?;
let request_event = req.into_event(payload).await?;
info!("Received Event: {:?}", request_event);
// Build response event cloning the original event and setting the new type and source
let forward_event = EventBuilderV10::from(request_event)
.source(
Url::parse(
"https://github.com/knative/docs/docs/serving/samples/cloudevents/cloudevents-rust",
)
.unwrap(),
)
.source("https://github.com/knative/docs/docs/serving/samples/cloudevents/cloudevents-rust")
.ty("dev.knative.docs.sample")
.build();
.build()
// If i can't build the event, fail with internal server error
.map_err(actix_web::error::ErrorInternalServerError)?;
let client = reqwest::Client::new();
let response = cloudevents_sdk_reqwest::event_to_request(forward_event, client.post(sink_url))
// If i can't build the request, fail with internal server error
let response = client.post(sink_url)
.event(forward_event)
.map_err(actix_web::error::ErrorInternalServerError)?
.send()
.await