pub mod bridge;
pub mod client;
pub mod error;
pub mod hub;
pub mod ilink;
pub mod metrics;
pub mod paths;
pub mod relay;
pub mod runtime;
pub mod server;
pub mod store;
pub use error::HubError;
pub use hub::queue::InMemoryQueue;
pub use hub::queue::MessageQueue;
pub use hub::HubState;
pub use ilink::QrLoginUiEvent;
pub use runtime::serve::{run_serve, ServeOptions};
pub fn redact_token(t: &str) -> String {
let prefix: String = t.chars().take(8).collect();
format!("{prefix}…")
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_redact_token_safety() {
assert_eq!(redact_token(""), "…");
assert_eq!(redact_token("abc"), "abc…");
assert_eq!(redact_token("12345678"), "12345678…");
assert_eq!(redact_token("abcdefghijkl"), "abcdefgh…");
assert_eq!(redact_token("🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀"), "🦀🦀🦀🦀🦀🦀🦀🦀…");
assert_eq!(redact_token("测试token长度校验"), "测试token长…");
}
}