Expand description
This crate integrates the cloudevents-sdk with Actix web to easily send and receive CloudEvents.
To deserialize an HTTP request as CloudEvent:
use cloudevents_sdk_actix_web::HttpRequestExt;
use actix_web::{HttpRequest, web, post};
#[post("/")]
async fn post_event(req: HttpRequest, payload: web::Payload) -> Result<String, actix_web::Error> {
let event = req.to_event(payload).await?;
println!("Received Event: {:?}", event);
Ok(format!("{:?}", event))
}
To serialize a CloudEvent to an HTTP response:
use cloudevents_sdk_actix_web::HttpResponseBuilderExt;
use actix_web::{HttpRequest, web, get, HttpResponse};
use cloudevents::{EventBuilderV10, EventBuilder};
use serde_json::json;
#[get("/")]
async fn get_event() -> Result<HttpResponse, actix_web::Error> {
Ok(HttpResponse::Ok()
.event(
EventBuilderV10::new()
.id("0001")
.ty("example.test")
.source("http://localhost/")
.data("application/json", json!({"hello": "world"}))
.build()
.expect("No error while building the event"),
)
.await?
)
}
Check out the cloudevents-sdk docs for more details on how to use cloudevents::Event
Structs§
- Http
Request Deserializer - Wrapper for
HttpRequest
that implementsMessageDeserializer
trait. - Http
Response Serializer - Wrapper for
HttpResponseBuilder
that implementsStructuredSerializer
andBinarySerializer
.
Traits§
- Http
Request Ext - Extention Trait for
HttpRequest
which acts as a wrapper for the functionrequest_to_event()
. - Http
Response Builder Ext - Extension Trait for
HttpResponseBuilder
which acts as a wrapper for the functionevent_to_response()
.
Functions§
- event_
to_ response - Method to fill an
HttpResponseBuilder
with anEvent
. - request_
to_ event - Method to transform an incoming
HttpRequest
toEvent
.