Commit f83d14a26507a006c7ab9cbd470d1003e72cf1c8

Authored by Adhidarma Hadiwinoto
1 parent b3419340d6
Exists in master

recleaning

Showing 1 changed file with 18 additions and 9 deletions Inline Diff

1 var name = require('path').basename(__filename); 1 var name = require('path').basename(__filename);
2 2
3 var redis = require('redis'); 3 var redis = require('redis');
4 var redisClient; 4 var redisClient;
5 5
6 var http = require('http'); 6 var http = require('http');
7 var nsr = require('node-simple-router'); 7 var nsr = require('node-simple-router');
8 var router = nsr(); 8 var router = nsr();
9 9
10 var js2xmlparser = require('js2xmlparser'); 10 var js2xmlparser = require('js2xmlparser');
11 11
12 var httpServer; 12 var httpServer;
13 var config; 13 var config;
14 var logger; 14 var logger;
15 15
16 function formatData(data, format) { 16 function formatData(data, format) {
17 if (format == 'xml') { 17 if (format == 'xml') {
18 return js2xmlparser('stock', data); 18 return js2xmlparser('stock', data);
19 } 19 }
20 return JSON.stringify(data); 20 return JSON.stringify(data);
21 } 21 }
22 22
23 function getStockKeyForDenom(denom) {
24 return 'stock.dompul.by-denom.' + denom;
25 }
26
23 function onHttpGetByDenom(request, response) { 27 function onHttpGetByDenom(request, response) {
24 var key = 'stock.dompul.by-denom.' + request.params.denom; 28 var key = getStockKeyForDenom(request.params.denom);
25 29
26 redisClient.hgetall(key, function(err, obj) { 30 redisClient.hgetall(key, function(err, obj) {
27 31
28 if (err) { 32 if (err) {
29 response.end(); 33 response.end('Error: ' + err);
30 return; 34 return;
31 } 35 }
32 36
33 if (request.params.total != true) { 37 response.end(formatData(obj, request.params.format));
34 response.end(formatData(obj, request.params.format)); 38 });
39 }
40
41 function onHttpGetTotalByDenom(request, response) {
42 var key = getStockKeyForDenom(request.params.denom);
43
44 redisClient.hgetall(key, function(err, obj) {
45
46 if (err) {
47 response.end('Error: ' + err);
35 return; 48 return;
36 } 49 }
37 50
38 var chips = Object.getOwnPropertyNames(obj); 51 var chips = Object.getOwnPropertyNames(obj);
39 var chipsCount = chips.length; 52 var chipsCount = chips.length;
40 var total = 0; 53 var total = 0;
41 54
42 for (var i = 0; i < chipsCount; i++) { 55 for (var i = 0; i < chipsCount; i++) {
43 total = total + parseInt(obj[chips[i]]); 56 total = total + parseInt(obj[chips[i]]);
44 } 57 }
45 response.end(total.toString()); 58 response.end(total.toString());
46 }); 59 });
47 } 60 }
48 61
49 62
50 function createServer() { 63 function createServer() {
51 router.get('/realtime-report/stock/:denom/index/:format', onHttpGetByDenom); 64 router.get('/realtime-report/stock/:denom/index/:format', onHttpGetByDenom);
52 65 router.get('/realtime-report/stock/:denom/total', onHttpGetTotalByDenom);
53 router.get('/realtime-report/stock/denoms/:denom/total', function(req, res) {
54 req.params.total = true;
55 onHttpGetByDenom(req, res);
56 });
57 66
58 httpServer = http.createServer(router).listen(config.httpserver.listen_port); 67 httpServer = http.createServer(router).listen(config.httpserver.listen_port);
59 console.log('HTTP server listens on port ' + config.httpserver.listen_port); 68 console.log('HTTP server listens on port ' + config.httpserver.listen_port);
60 } 69 }
61 70
62 function start(_config, _logger) { 71 function start(_config, _logger) {
63 config = _config; 72 config = _config;
64 logger = _logger; 73 logger = _logger;
65 74
66 redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host); 75 redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host);
67 76
68 redisClient.on("error", function (err) { 77 redisClient.on("error", function (err) {
69 logger.error(name + "- redis client error: " + err); 78 logger.error(name + "- redis client error: " + err);
70 }); 79 });
71 80
72 81
73 logger.info('Starting http server'); 82 logger.info('Starting http server');
74 83
75 createServer(); 84 createServer();