index.js 1.8 KB
var iniparser = require('iniparser');
var config = iniparser.parseSync('./config.ini');

if (config.yahoomessenger.keepalive_interval == null) {
  config.yahoomessenger.keepalive_interval = 60;
}

var strftime = require('strftime');

var logger = require('winston');
logger.remove(logger.transports.Console);
logger.add(logger.transports.Console, { timestamp: function() { return (strftime('%F %T'));  }});


var ym = require('./ym');
var YahooMessenger = ym.start(config, logger);

var http = require('http');
var nsr = require('node-simple-router');
var router = nsr();

router.get('/hello', function(request, response) {
    response.end('Hello bro');
});

router.get('/broadcastPing', function(request, response) {
    response.end('Ok');
    ym.broadcast(config.yahoomessenger.report_to, 'PING');
});

router.get('/status', function(request, response) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write(config.yahoomessenger.status);
    response.end();
});

router.post('/status', function(request, response) {
    var apikey = request.body.apikey;
    if (apikey != config.httpserver.apikey) {
        response.end('Invalid APIKEY: ' + apikey);
        return;
    }
    response.end('Ok');

    broadcastReport('Request come from HTTP to set status to: ' + request.body.status);
    ym.setStatus(request.body.status);
});

router.get('/relogin/:apikey', function(request, response) {
    var apikey = request.params.apikey;

    if (apikey != config.httpserver.apikey){
        response.end('Invalid APIKEY: ' + apikey);
        return;
    }

    logger.info("Got relogin request by http");
    ym.relogin();
    response.end('Ok');
});

logger.info("Starting http server on port " + config.httpserver.listen_port);
var httpServer = http.createServer(router).listen(config.httpserver.listen_port);