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 id_utils;
39pub mod jwe;
40pub mod kms_client;
41pub mod mention_parser;
42pub mod mercury_socket;
43pub mod message_decryptor;
44pub mod types;
45pub mod url_validation;
46
47// Re-export primary public API
48pub use errors::WebexError;
49pub use handler::{HandlerEvent, WebexMessageHandler};
50pub use id_utils::{to_rest_id, from_rest_id};
51pub use mention_parser::{parse_mentions, ParsedMentions};
52pub use types::{
53    AttachmentAction, Config, ConnectionStatus, DecryptedMessage, DeletedMessage,
54    DeviceRegistration, FetchFn, FetchRequest, FetchResponse, HandlerStatus, InjectedWebSocket,
55    MembershipActivity, MercuryActivity, MercuryActor, MercuryObject, MercuryParent,
56    MercuryTarget, NetworkMode, RoomActivity, WebSocketFactory,
57};