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};