adaptor-xmpp.js 1.17 KB
var xmpp = require('simple-xmpp');

var username;
var password;

var callbacks;

function onOnline(data) {
    logger.info('XMPP login successful', {data: data});
    if (callbacks.onOnline) {
        callbacks.onOnline();
    }
}

function onPM(sender, msg) {
    logger.verbose('Got a message', {from: sender, msg: msg})
    if (callbacks.onPM) {
        callbacks.onPM(sender, msg);
    }
}

function onError(err) {
    logger.warn('XMPP error, terminating in 3 secs', {err: err});
    setTimeout(process.exit, 3000, 1);
}

function onSubscribe(sender) {
    xmpp.acceptSubscription(sender);
}

function init(_username, _password, _logger, _callbacks) {
    username = _username;
    password = _password;
    logger = _logger;
    callbacks = _callbacks;

    xmpp.on('online', onOnline);
    xmpp.on('chat', onPM);
    xmpp.on('error', onError);
    xmpp.on('subscribe', onSubscribe)

    xmpp.connect({
        jid: username,
        password: password
    });
}

function sendMessage(destination, msg) {
    logger.verbose('Sending message', {from: username, destination: destination, msg: msg});
    xmpp.send(destination, msg);
}

exports.init = init;
exports.sendMessage = sendMessage;