use chat_system::Messenger;
use chat_system::messengers::IrcMessenger;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let nick = std::env::var("IRC_NICK").unwrap_or_else(|_| "chat-system-secure".into());
let mut client = IrcMessenger::new(
"irc-encrypted-example",
"irc.libera.chat",
6697, nick,
)
.with_tls(true) .with_channels(vec!["#rust-chat-test"]);
println!("Connecting to IRC server via TLS...");
println!("Server: irc.libera.chat:6697");
println!("Using encrypted connection (TLS 1.2+)");
println!();
client.initialize().await?;
println!("✓ Connected securely via TLS!");
println!();
println!("Sending message...");
client
.send_message(
"#rust-chat-test",
"Hello from chat-system via encrypted IRC!",
)
.await?;
println!("✓ Message sent");
println!();
println!("Listening for messages (5 messages or 30 seconds)...");
println!();
let mut count = 0;
let deadline = tokio::time::Instant::now() + std::time::Duration::from_secs(30);
while count < 5 && tokio::time::Instant::now() < deadline {
let msgs = client.receive_messages().await?;
for msg in msgs {
println!(
"[{}] {}: {}",
msg.channel.as_deref().unwrap_or("?"),
msg.sender,
msg.content
);
count += 1;
}
tokio::time::sleep(std::time::Duration::from_millis(500)).await;
}
println!();
println!("Disconnecting...");
client.disconnect().await?;
println!("✓ Disconnected from IRC");
println!();
println!("All communication was encrypted via TLS!");
Ok(())
}