diff --git a/index.js b/index.js index b948476..7e50795 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,40 @@ +var name = 'Store DOMPUL stock'; +var logger = require('winston'); +logger.info('Starting ' + name); + +logger.info('Parsing config file'); var iniparser = require('iniparser'); var config = iniparser.parseSync('./config.ini'); +logger.info('Creating redis clients for ' + config.globals.redis_host + ':' + config.globals.redis_port); var redis = require('redis'); -var redisClient = redis.createClient(); +var redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host); +var redisSubscriber = redis.createClient(config.globals.redis_port, config.globals.redis_host); + +redisSubscriber.on('message', function(channel, message) { + if (channel == config.channels.dompul_proxy_topup) { + var params = JSON.parse(message); + + if (params['resp_code'] != '00') return; + + redisClient.hset('stock.dompul.by-denom.' + params['ussd_nom'], params['ussd_chipinfo'], parseInt(params['ussd_stok'])); + redisClient.hset('stock.dompul.by-chipinfo.' + params['ussd_chipinfo'], params['ussd_nom'], parseInt(params['ussd_stok'])); + + var key = 'stock.dompul.by-denom.' + params['ussd_nom']; + redisClient.hgetall(key, function(err, obj) { + var chips = Object.getOwnPropertyNames(obj); + var chipsCount = chips.length; + var total = 0; + for (var i = 0; i < chipsCount; i++) { + total = total + parseInt(obj[chips[i]]); + } + + logger.info(params['ussd_nom'] + ': ' + total); + }); + } +}); + + +logger.info('Subscribing redis channel'); +redisSubscriber.subscribe(config.channels.dompul_proxy_topup); +logger.info('Waiting for redis message'); diff --git a/package.json b/package.json index 39c4878..077820b 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "dependencies": { "redis": "~0.12.1", "hiredis": "~0.3.0", - "iniparser": "~1.0.5" + "iniparser": "~1.0.5", + "winston": "~1.0.0" } }