diff --git a/index.js b/index.js index 7abb77a..4417550 100644 --- a/index.js +++ b/index.js @@ -6,6 +6,25 @@ var fs = require('fs'); var ini = require('ini'); var config = ini.parse(fs.readFileSync(__dirname + '/config.ini', 'utf-8')); +var last_message_hash; + +var logger = new (winston.Logger)({ + transports: [ + new (winston.transports.Console)({ + timestamp: function() { + return strftime('%F %T', new Date()); + } + }), + new (winston.transports.DailyRotateFile)({ + filename: __dirname + '/log', + timestamp: function() { + return strftime('%F %T', new Date()); + } + }) + ] +}); + + var ym = require('yahoomessenger'); ym.newInstance(); @@ -14,33 +33,48 @@ function onReady(){ } function onLoginSuccessful(data) { - console.log('Login successful as ' + data.firstname + ' ' + data.lastname + ' (' + data.username + ')'); - console.log(data); + logger.info('Login successful as ' + data.firstname + ' ' + data.lastname + ' (' + data.username + ')', {data: data}); +} + +function sendIgnoreResponse(destination, message) { + ym.sendPM(destination, "Pesan anda diabaikan, silahkan diulang beberapa saat lagi jika diperlukan: " + message); } function onPm(data) { - console.log('onPM()'); - console.log(data); + logger.info('onPM()', {data: data}); + + var new_message_hash = data.sender + ': ' + data.message; + + if (last_message_hash == new_message_hash) { + return; + } + + last_message_hash = new_message_hash; ym.sendPM(data.sender, "Pesan anda telah diterima dan akan segera diproses: " + data.message); } function onOfflinePM(data) { - console.log('onOfflinePM()'); - console.log(data); + logger.info('onOfflinePM()', {data: data}); + sendIgnoreResponse(data.sender, data.message); } function onBuddyAddRequest(data) { - console.log('onBuddyAddRequest()'); - console.log(data); + logger.info('onBuddyAddRequest()', {data: data}); ym.acceptAddBuddy(data.username); + logger.info('Accept buddy add request: ' + data.username, {data: data}); +} + +function onHttpIncomingMessage(request, response) { + var qs = url.parse(request.url, true).query; + logger.info("onHttpIncomingMessage()", {qs: qs}); } function createHttpServer() { - console.log('createHttpServer()'); + logger.verbose('createHttpServer()'); - var httpServer = http.createServer(function(request,response) { - var qs = url.parse(request.url, true).query; - + var httpServer = http.createServer(onHttpIncomingMessage); + httpServer.listen(config.globals.listen_port, function(){ + logger.info("HTTP server listening on " + config.globals.listen_port); }); }