[][src]Crate cloudevents_sdk_actix_web

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

HttpRequestDeserializer

Wrapper for HttpRequest that implements MessageDeserializer trait.

HttpResponseSerializer

Wrapper for [HttpResponseBuilder] that implements StructuredSerializer and BinarySerializer.

Traits

HttpRequestExt

Extention Trait for HttpRequest which acts as a wrapper for the function request_to_event().

HttpResponseBuilderExt

Extension Trait for [HttpResponseBuilder] which acts as a wrapper for the function event_to_response().

Functions

event_to_response

Method to fill an [HttpResponseBuilder] with an Event.

request_to_event

Method to transform an incoming HttpRequest to Event.