Skip to main content

webex_message_handler/
lib.rs

1//! Lightweight Webex Mercury WebSocket + KMS decryption for receiving bot messages.
2//!
3//! This crate provides a minimal, standalone way to receive and decrypt Webex
4//! messages over the Mercury WebSocket, without the full Webex SDK.
5//!
6//! # Example
7//!
8//! ```rust,no_run
9//! use webex_message_handler::{WebexMessageHandler, Config, HandlerEvent};
10//!
11//! #[tokio::main]
12//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
13//!     let handler = WebexMessageHandler::new(Config {
14//!         token: std::env::var("WEBEX_BOT_TOKEN")?,
15//!         ..Default::default()
16//!     })?;
17//!
18//!     let mut rx = handler.take_event_rx().await.unwrap();
19//!
20//!     handler.connect().await?;
21//!
22//!     while let Some(event) = rx.recv().await {
23//!         match event {
24//!             HandlerEvent::MessageCreated(msg) => {
25//!                 println!("[{}] {}", msg.person_email, msg.text);
26//!             }
27//!             _ => {}
28//!         }
29//!     }
30//!
31//!     Ok(())
32//! }
33//! ```
34
35pub mod device_manager;
36pub mod errors;
37pub mod handler;
38pub mod jwe;
39pub mod kms_client;
40pub mod mercury_socket;
41pub mod message_decryptor;
42pub mod types;
43
44// Re-export primary public API
45pub use errors::WebexError;
46pub use handler::{HandlerEvent, WebexMessageHandler};
47pub use types::{
48    Config, ConnectionStatus, DecryptedMessage, DeletedMessage, DeviceRegistration, FetchFn,
49    FetchRequest, FetchResponse, HandlerStatus, InjectedWebSocket, MercuryActivity, MercuryActor,
50    MercuryObject, MercuryTarget, NetworkMode, WebSocketFactory,
51};