Skip to content

Commit

Permalink
fixed doctest
Browse files Browse the repository at this point in the history
  • Loading branch information
minghuaw committed Aug 26, 2022
1 parent 0d14a73 commit 448bbb1
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 16 deletions.
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,4 @@ mockito = "0.25.1"
tokio = { version = "^1.0", features = ["full"] }
mime = "0.3"
tower = { version = "0.4", features = ["util"] }
fe2o3-amqp = { version = "0.4" }
73 changes: 57 additions & 16 deletions src/binding/fe2o3_amqp/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@
//! To send CloudEvents
//!
//! ```rust
//! use serde_json::json;
//! use fe2o3_amqp::{Connection, Sender, Session};
//! use cloudevents::{EventBuilderV10, binding::fe2o3_amqp::{EventMessage, AmqpMessage}};
//! use cloudevents::{
//! EventBuilder, EventBuilderV10,
//! binding::fe2o3_amqp::{EventMessage, AmqpMessage}
//! };
//!
//! // You need a running AMQP 1.0 broker to try out this example.
//! // With docker: docker run -it --rm -e ARTEMIS_USERNAME=guest -e ARTEMIS_PASSWORD=guest -p 5672:5672 vromero/activemq-artemis
//!
//! #[tokio::main]
//! async fn main() {
//! # async fn send_event() {
//! let mut connection =
//! Connection::open("cloudevents-sdk-rust", "amqp://guest:guest@localhost:5672")
//! .await
Expand All @@ -20,11 +23,11 @@
//! let mut sender = Sender::attach(&mut session, "sender", "q1").await.unwrap();
//!
//! let event = EventBuilderV10::new()
//! .id(i.to_string())
//! .id("1")
//! .ty("example.test")
//! .source("localhost")
//! .extension("ext-name", "AMQP")
//! .data("application/json", value)
//! .data("application/json", json!({"hello": "world"}))
//! .build()
//! .unwrap();
//!
Expand All @@ -36,20 +39,22 @@
//! sender.close().await.unwrap();
//! session.end().await.unwrap();
//! connection.close().await.unwrap();
//! }
//! # }
//! ```
//!
//! To receiver CloudEvents
//!
//! ```rust
//! use fe2o3_amqp::{Connection, Receiver, Session};
//! use cloudevents::{EventBuilderV10, binding::fe2o3_amqp::{EventMessage, AmqpMessage}};
//! use cloudevents::{
//! EventBuilderV10, message::MessageDeserializer,
//! binding::fe2o3_amqp::{EventMessage, AmqpMessage}
//! };
//!
//! // You need a running AMQP 1.0 broker to try out this example.
//! // With docker: docker run -it --rm -e ARTEMIS_USERNAME=guest -e ARTEMIS_PASSWORD=guest -p 5672:5672 vromero/activemq-artemis
//!
//! #[tokio::main]
//! async fn main() {
//! # async fn receive_event() {
//! let mut connection =
//! Connection::open("cloudevents-sdk-rust", "amqp://guest:guest@localhost:5672")
//! .await
Expand All @@ -60,13 +65,14 @@
//! let delivery = receiver.recv().await.unwrap();
//! receiver.accept(&delivery).await.unwrap();
//!
//! let event_message = EventMessage::from(delivery.into_message());
//! let message: AmqpMessage = delivery.into_message();
//! let event_message = EventMessage::from(message);
//! let event = MessageDeserializer::into_event(event_message).unwrap();
//!
//! sender.close().await.unwrap();
//! receiver.close().await.unwrap();
//! session.end().await.unwrap();
//! connection.close().await.unwrap();
//! }
//! # }
//! ```

use std::convert::TryFrom;
Expand Down Expand Up @@ -112,22 +118,57 @@ pub type AmqpBody = Body<Value>;
/// ## [`Event`] -> [`AmqpMessage`] in binary content mode
///
/// ```rust
/// use serde_json::json;
/// use fe2o3_amqp_types::messaging::Message;
/// use cloudevents::{EventBuilder, EventBuilderV10, binding::fe2o3_amqp::EventMessage};
///
/// let event = EventBuilderV10::new()
/// .id("1")
/// .ty("example.test")
/// .source("localhost")
/// .extension("ext-name", "AMQP")
/// .data("application/json", json!({"hello": "world"}))
/// .build()
/// .unwrap();
/// let event_message = EventMessage::from_binary_event(event).unwrap();
/// let amqp_message = AmqpMessage:from(event_message);
/// let amqp_message = Message::from(event_message);
/// ```
///
/// ## [`Event`] -> [`AmqpMessage`] in structured content mode
///
/// ```rust
/// use serde_json::json;
/// use fe2o3_amqp_types::messaging::Message;
/// use cloudevents::{EventBuilder, EventBuilderV10, binding::fe2o3_amqp::EventMessage};
///
/// let event = EventBuilderV10::new()
/// .id("1")
/// .ty("example.test")
/// .source("localhost")
/// .extension("ext-name", "AMQP")
/// .data("application/json", json!({"hello": "world"}))
/// .build()
/// .unwrap();
/// let event_message = EventMessage::from_structured_event(event).unwrap();
/// let amqp_message = AmqpMessage:from(event_message);
/// let amqp_message = Message::from(event_message);
/// ```
///
/// ## [`AmqpMessage`] -> [`Event`]
///
/// ```rust
/// let event_message = EventMessage::from(amqp_message);
/// let event = MessageDeserializer::into_event(event_message).unwrap();
/// use fe2o3_amqp::Receiver;
/// use cloudevents::{
/// message::MessageDeserializer,
/// binding::fe2o3_amqp::{AmqpMessage, EventMessage}
/// };
///
/// # async fn receive_event(receiver: &mut Receiver) {
/// let delivery = receiver.recv().await.unwrap();
/// receiver.accept(&delivery).await.unwrap();
/// let amqp_message: AmqpMessage = delivery.into_message();
/// let event_message = EventMessage::from(amqp_message);
/// let event = MessageDeserializer::into_event(event_message).unwrap();
/// # }
/// ```
pub struct EventMessage {
pub content_type: Option<Symbol>,
Expand Down
1 change: 1 addition & 0 deletions src/binding/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ pub mod actix;
#[cfg_attr(docsrs, doc(cfg(feature = "axum")))]
#[cfg(feature = "axum")]
pub mod axum;
#[cfg_attr(docsrs, doc(cfg(feature = "fe2o3-amqp")))]
#[cfg(feature = "fe2o3-amqp")]
pub mod fe2o3_amqp;

Expand Down

0 comments on commit 448bbb1

Please sign in to comment.