client.rs

 1extern crate xmpp;
 2
 3use xmpp::jid::Jid;
 4use xmpp::client::ClientBuilder;
 5use xmpp::plugins::stanza_debug::StanzaDebugPlugin;
 6use xmpp::plugins::stanza::StanzaPlugin;
 7use xmpp::plugins::unhandled_iq::UnhandledIqPlugin;
 8use xmpp::plugins::messaging::{MessagingPlugin, MessageEvent};
 9use xmpp::plugins::presence::{PresencePlugin, Type, Show};
10use xmpp::plugins::disco::DiscoPlugin;
11use xmpp::plugins::caps::CapsPlugin;
12use xmpp::plugins::ibb::IbbPlugin;
13use xmpp::plugins::ping::PingPlugin;
14use xmpp::event::{Priority, Propagation};
15
16use std::env;
17
18fn main() {
19    let jid: Jid = env::var("JID").unwrap().parse().unwrap();
20    let pass = env::var("PASS").unwrap();
21    let mut client = ClientBuilder::new(jid.clone())
22                                   .password(pass)
23                                   .connect()
24                                   .unwrap();
25    if env::var("STANZA_DEBUG").is_ok() {
26        client.register_plugin(StanzaDebugPlugin::new());
27    }
28    client.register_plugin(StanzaPlugin::new());
29    client.register_plugin(UnhandledIqPlugin::new());
30    client.register_plugin(MessagingPlugin::new());
31    client.register_plugin(PresencePlugin::new());
32    client.register_plugin(DiscoPlugin::new("client", "bot", "en", "xmpp-rs"));
33    client.register_plugin(CapsPlugin::new());
34    client.register_plugin(IbbPlugin::new());
35    client.register_plugin(PingPlugin::new());
36    client.plugin::<PingPlugin>().init();
37    client.plugin::<IbbPlugin>().init();
38    client.register_handler(Priority::Max, |e: &MessageEvent| {
39        println!("{:?}", e);
40        Propagation::Continue
41    });
42    client.plugin::<PresencePlugin>().set_presence(Type::None, Show::None, None).unwrap();
43    client.main().unwrap();
44}