client.rs

 1extern crate xmpp;
 2
 3use xmpp::jid::Jid;
 4use xmpp::client::ClientBuilder;
 5use xmpp::plugins::stanza::StanzaPlugin;
 6use xmpp::plugins::unhandled_iq::UnhandledIqPlugin;
 7use xmpp::plugins::messaging::{MessagingPlugin, MessageEvent};
 8use xmpp::plugins::presence::{PresencePlugin, Type};
 9use xmpp::plugins::ibb::IbbPlugin;
10use xmpp::plugins::ping::{PingPlugin, PingEvent};
11use xmpp::event::{Priority, Propagation};
12
13use std::env;
14
15fn main() {
16    let jid: Jid = env::var("JID").unwrap().parse().unwrap();
17    let pass = env::var("PASS").unwrap();
18    let mut client = ClientBuilder::new(jid.clone())
19                                   .password(pass)
20                                   .connect()
21                                   .unwrap();
22    client.register_plugin(StanzaPlugin::new());
23    client.register_plugin(UnhandledIqPlugin::new());
24    client.register_plugin(MessagingPlugin::new());
25    client.register_plugin(PresencePlugin::new());
26    client.register_plugin(IbbPlugin::new());
27    client.register_plugin(PingPlugin::new());
28    client.register_handler(Priority::Max, |e: &MessageEvent| {
29        println!("{:?}", e);
30        Propagation::Continue
31    });
32    client.plugin::<PresencePlugin>().set_presence(Type::Available, None, None).unwrap();
33    client.main().unwrap();
34}