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;