Commit f9c75e1fa93d250506747e47946674a00c7258f7

Authored by Adhidarma Hadiwinoto
1 parent 630c8bf6a4
Exists in master

going to develop httpserver

Showing 2 changed files with 38 additions and 0 deletions Inline Diff

File was created 1 var config;
2 var logger;
3 var name = require('path').basename(__filename);
4 var http = require('http');
5 var nsr = require('node-simple-router');
6 var router = nsr();
7 var httpServer;
8
9 function onGetChipsIndex(request, response) {
10 response.end();
11 }
12
13 function onGetDenomsIndex(request, response) {
14 response.end();
15 }
16
17
18 function createServer() {
19 router.get('/chips', onGetChipsIndex);
20 router.get('/denoms', onGetDenomsIndex);
21
22 httpServer = http.createServer(router).listen(config.httpserver.listen_port);
23 console.log('HTTP server listens on port ' + config.httpserver.listen_port);
24 }
25
26 function start(_config, _logger) {
27 config = _config;
28 logger = _logger;
29
30 logger.info('Starting http server');
31
32 createServer();
33 }
34
35 exports.start = start;
36
1 var name = 'Store DOMPUL stock'; 1 var name = 'Store DOMPUL stock';
2 var logger = require('winston'); 2 var logger = require('winston');
3 logger.info('Starting ' + name); 3 logger.info('Starting ' + name);
4 4
5 logger.info('Parsing config file'); 5 logger.info('Parsing config file');
6 var iniparser = require('iniparser'); 6 var iniparser = require('iniparser');
7 var config = iniparser.parseSync('./config.ini'); 7 var config = iniparser.parseSync('./config.ini');
8 8
9 logger.info('Creating redis clients for ' + config.globals.redis_host + ':' + config.globals.redis_port); 9 logger.info('Creating redis clients for ' + config.globals.redis_host + ':' + config.globals.redis_port);
10 var redis = require('redis'); 10 var redis = require('redis');
11 var redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host); 11 var redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host);
12 var redisSubscriber = redis.createClient(config.globals.redis_port, config.globals.redis_host); 12 var redisSubscriber = redis.createClient(config.globals.redis_port, config.globals.redis_host);
13 13
14 redisSubscriber.on('message', function(channel, message) { 14 redisSubscriber.on('message', function(channel, message) {
15 if (channel == config.channels.dompul_proxy_topup) { 15 if (channel == config.channels.dompul_proxy_topup) {
16 var params = JSON.parse(message); 16 var params = JSON.parse(message);
17 17
18 if (params['resp_code'] != '00') return; 18 if (params['resp_code'] != '00') return;
19 if (params['ussd_msg'].indexOf('$SN=;OK') >= 0) return; 19 if (params['ussd_msg'].indexOf('$SN=;OK') >= 0) return;
20 20
21 redisClient.hset('stock.dompul.by-denom.' + params['ussd_nom'], params['ussd_chipinfo'], parseInt(params['ussd_stok'])); 21 redisClient.hset('stock.dompul.by-denom.' + params['ussd_nom'], params['ussd_chipinfo'], parseInt(params['ussd_stok']));
22 redisClient.hset('stock.dompul.by-chipinfo.' + params['ussd_chipinfo'], params['ussd_nom'], parseInt(params['ussd_stok'])); 22 redisClient.hset('stock.dompul.by-chipinfo.' + params['ussd_chipinfo'], params['ussd_nom'], parseInt(params['ussd_stok']));
23 23
24 var key = 'stock.dompul.by-denom.' + params['ussd_nom']; 24 var key = 'stock.dompul.by-denom.' + params['ussd_nom'];
25 25
26 redisClient.hgetall(key, function(err, obj) { 26 redisClient.hgetall(key, function(err, obj) {
27 var chips = Object.getOwnPropertyNames(obj); 27 var chips = Object.getOwnPropertyNames(obj);
28 var chipsCount = chips.length; 28 var chipsCount = chips.length;
29 29
30 var total = 0; 30 var total = 0;
31 var nonEmptyChipsCount = 0; 31 var nonEmptyChipsCount = 0;
32 32
33 for (var i = 0; i < chipsCount; i++) { 33 for (var i = 0; i < chipsCount; i++) {
34 var stock = parseInt(obj[chips[i]]); 34 var stock = parseInt(obj[chips[i]]);
35 if (stock > 0) { 35 if (stock > 0) {
36 nonEmptyChipsCount++; 36 nonEmptyChipsCount++;
37 } 37 }
38 38
39 total = total + stock; 39 total = total + stock;
40 } 40 }
41 41
42 logger.info( 42 logger.info(
43 'XL' + params['ussd_nom'] 43 'XL' + params['ussd_nom']
44 + ' ' 44 + ' '
45 + params['ussd_chipinfo'] + ': ' + parseInt(params['ussd_stok']) 45 + params['ussd_chipinfo'] + ': ' + parseInt(params['ussd_stok'])
46 + '; Total ' + total + ' in ' + nonEmptyChipsCount + ' chips'); 46 + '; Total ' + total + ' in ' + nonEmptyChipsCount + ' chips');
47 }); 47 });
48 } 48 }
49 }); 49 });
50 50
51 51
52 logger.info('Subscribing redis channel'); 52 logger.info('Subscribing redis channel');
53 redisSubscriber.subscribe(config.channels.dompul_proxy_topup); 53 redisSubscriber.subscribe(config.channels.dompul_proxy_topup);
54 logger.info('Waiting for redis message'); 54 logger.info('Waiting for redis message');
55
56 var httpserver = require('./httpserver.js');
57 httpserver.start(config, logger);
55 58