From 2902d8734f5c1f036eb340e35e8d1dc7a74c23b6 Mon Sep 17 00:00:00 2001 From: Till Hoeppner Date: Wed, 17 Jun 2015 17:03:56 +0200 Subject: This commit is a little too large. Sorry. :S --- README.md | 48 ++++++++++++++---------------------------------- 1 file changed, 14 insertions(+), 34 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index ff71b86..273fd24 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ This library is supposed to be a thin layer over the IRC protocol, doing all the ## Example -Compiles and works with `rustc 1.1.0-nightly (ce1150b9f 2015-05-04)` and `fbb7251493ff5a9bc42f849b9b781e69aef9d184` of this library. +Compiles and tested with `rustc 1.2.0-nightly (8937ec100 2015-06-15)` and `63838165c31397fec199bf99c96497a1169c4d52` of this library. Run with @@ -38,69 +38,49 @@ and join [#botzoo on irc.mozilla.org](http://irc.lc/mozilla/botzoo). ```rust extern crate irsc; extern crate env_logger; -#[cfg(feature = "ssl")] extern crate openssl; -use std::borrow::ToOwned; -use std::borrow::Cow::*; - -use irsc::client::Client; use irsc::color::bold; use irsc::*; use irsc::Command::*; use irsc::Reply::*; -#[cfg(feature = "ssl")] use openssl::ssl::{ Ssl, SslContext, SslMethod }; static NAME: &'static str = "rusticbot"; static DESC: &'static str = "A bot, written in Rust."; -fn callback(server: &mut Client, msg: &Message) { - match Command::from_message(msg) { - Some(PRIVMSG(to, content)) => { - let from = msg.prefix().and_then(Ident::parse).unwrap(); +fn callback(server: &mut Client, msg: &Message, event: Option) { + match event { + Some(Event::Command(PRIVMSG(to, content))) => { + let from = msg.ident().unwrap(); let response = match msg.msg_type { MsgType::Irc => format!("{} wrote: {}", from.nickname, bold(&content)), - MsgType::Ctcp => format!("{} emoted: {}", from.nickname, bold(&content["ACTION ".len()..])) + MsgType::Ctcp => format!("{} emoted: {}", from.nickname, + bold(&content["ACTION ".len()..])) }; // only send to channels, to prevent recursion when we are pm'ed // technically, there are other prefixes than '#', but ignoring them is fine if to.starts_with("#") { - server.send(PRIVMSG(to, Owned(response))).unwrap(); + server.msg(&to, &response); } }, - _ => () - } - - match Reply::from_message(msg) { - Some(RPL_WELCOME(_)) => { - server.send(JOIN(vec![Borrowed("#botzoo")], vec![])).unwrap(); + Some(Event::Reply(RPL_WELCOME(_))) => { + server.join("#botzoo", None); }, _ => () } } -#[cfg(feature = "ssl")] -fn connect(s: &mut Client) { - let ssl = Ssl::new(&SslContext::new(SslMethod::Tlsv1).unwrap()).unwrap(); - s.connect_ssl("irc.mozilla.org".to_owned(), 6697, ssl).unwrap(); -} - -#[cfg(not(feature = "ssl"))] -fn connect(s: &mut Client) { - s.connect("irc.mozilla.org".to_owned(), 6667).unwrap(); -} - fn main() { env_logger::init().unwrap(); let mut s = Client::new(); - connect(&mut s); - s.send(NICK(Borrowed(NAME))).unwrap(); - s.send(USER(Borrowed(NAME), Borrowed("*"), Borrowed("*"), Borrowed(DESC))).unwrap(); + let ssl = Ssl::new(&SslContext::new(SslMethod::Tlsv1).unwrap()).unwrap(); + s.connect_ssl("irc.mozilla.org", 6697, ssl); + s.register(NAME, NAME, DESC); // Dedicate this thread to listening and event processing - s.listen(callback).unwrap(); + s.listen(Some(callback)); } ``` -- cgit v1.2.3