client.rs

 1extern crate xmpp;
 2
 3use xmpp::jid::Jid;
 4use xmpp::client::ClientBuilder;
 5use xmpp::plugins::messaging::{MessagingPlugin, MessageEvent};
 6use xmpp::plugins::presence::{PresencePlugin, Show};
 7use xmpp::sasl::mechanisms::{Scram, Sha1};
 8
 9use std::env;
10
11fn main() {
12    let jid: Jid = env::var("JID").unwrap().parse().unwrap();
13    let mut client = ClientBuilder::new(jid.clone()).connect().unwrap();
14    client.register_plugin(MessagingPlugin::new());
15    client.register_plugin(PresencePlugin::new());
16    let pass = env::var("PASS").unwrap();
17    let name = jid.node.clone().expect("JID requires a node");
18    client.connect(&mut Scram::<Sha1>::new(name, pass).unwrap()).unwrap();
19    client.bind().unwrap();
20    client.plugin::<PresencePlugin>().set_presence(Show::Available, None).unwrap();
21    loop {
22        let event = client.next_event().unwrap();
23        if let Some(evt) = event.downcast::<MessageEvent>() {
24            println!("{:?}", evt);
25        }
26    }
27}