cloudevents/binding/warp/
mod.rs

1//! This module integrates the [cloudevents-sdk](https://docs.rs/cloudevents-sdk) with [Warp web service framework](https://docs.rs/warp/)
2//! to easily send and receive CloudEvents.
3//!
4//! To deserialize an HTTP request as CloudEvent
5//!
6//! To echo events:
7//!
8//! ```
9//! # use warp_lib as warp;
10//! use warp::{Filter, Reply};
11//! use cloudevents::binding::warp::reply::from_event;
12//! use cloudevents::binding::warp::filter::to_event;
13//!
14//! let routes = warp::any()
15//!     // extracting event from request
16//!     .and(to_event())
17//!     // returning event back
18//!     .map(|event| from_event(event));
19//!
20//! warp::serve(routes).run(([127, 0, 0, 1], 3030));
21//! ```
22//!
23//! To create event inside request handlers and send them as responses:
24//!
25//! ```
26//! # use warp_lib as warp;
27//! # use http_0_2 as http;
28//! use cloudevents::{Event, EventBuilder, EventBuilderV10};
29//! use http::StatusCode;
30//! use serde_json::json;
31//! use warp::{Filter, Reply};
32//! use cloudevents::binding::warp::reply::from_event;
33//!
34//! let routes = warp::any().map(|| {
35//!     let event = EventBuilderV10::new()
36//!         .id("1")
37//!         .source("url://example_response/")
38//!         .ty("example.ce")
39//!         .data(
40//!             mime::APPLICATION_JSON.to_string(),
41//!             json!({
42//!                 "name": "John Doe",
43//!                 "age": 43,
44//!                 "phones": [
45//!                     "+44 1234567",
46//!                     "+44 2345678"
47//!                 ]
48//!             }),
49//!         )
50//!         .build();
51//!
52//!     match event {
53//!         Ok(event) => from_event(event),
54//!         Err(e) => warp::reply::with_status(
55//!             e.to_string(),
56//!             StatusCode::INTERNAL_SERVER_ERROR,
57//!         ).into_response(),
58//!     }
59//! });
60//!
61//! warp::serve(routes).run(([127, 0, 0, 1], 3030));
62//! ```
63
64pub mod filter;
65pub mod reply;