Commit f9c75e1fa93d250506747e47946674a00c7258f7
1 parent
630c8bf6a4
Exists in
master
going to develop httpserver
Showing 2 changed files with 38 additions and 0 deletions Inline Diff
httpserver.js
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 |
index.js
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 |