Commit 408d15fe30e36b81517352cb41de09d352738e88

Authored by Adhidarma Hadiwinoto
1 parent f83d14a265
Exists in master

handling /index without specifying format

Showing 1 changed file with 1 additions and 0 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) { 23 function getStockKeyForDenom(denom) {
24 return 'stock.dompul.by-denom.' + denom; 24 return 'stock.dompul.by-denom.' + denom;
25 } 25 }
26 26
27 function onHttpGetByDenom(request, response) { 27 function onHttpGetByDenom(request, response) {
28 var key = getStockKeyForDenom(request.params.denom); 28 var key = getStockKeyForDenom(request.params.denom);
29 29
30 redisClient.hgetall(key, function(err, obj) { 30 redisClient.hgetall(key, function(err, obj) {
31 31
32 if (err) { 32 if (err) {
33 response.end('Error: ' + err); 33 response.end('Error: ' + err);
34 return; 34 return;
35 } 35 }
36 36
37 response.end(formatData(obj, request.params.format)); 37 response.end(formatData(obj, request.params.format));
38 }); 38 });
39 } 39 }
40 40
41 function onHttpGetTotalByDenom(request, response) { 41 function onHttpGetTotalByDenom(request, response) {
42 var key = getStockKeyForDenom(request.params.denom); 42 var key = getStockKeyForDenom(request.params.denom);
43 43
44 redisClient.hgetall(key, function(err, obj) { 44 redisClient.hgetall(key, function(err, obj) {
45 45
46 if (err) { 46 if (err) {
47 response.end('Error: ' + err); 47 response.end('Error: ' + err);
48 return; 48 return;
49 } 49 }
50 50
51 var chips = Object.getOwnPropertyNames(obj); 51 var chips = Object.getOwnPropertyNames(obj);
52 var chipsCount = chips.length; 52 var chipsCount = chips.length;
53 var total = 0; 53 var total = 0;
54 54
55 for (var i = 0; i < chipsCount; i++) { 55 for (var i = 0; i < chipsCount; i++) {
56 total = total + parseInt(obj[chips[i]]); 56 total = total + parseInt(obj[chips[i]]);
57 } 57 }
58 response.end(total.toString()); 58 response.end(total.toString());
59 }); 59 });
60 } 60 }
61 61
62 62
63 function createServer() { 63 function createServer() {
64 router.get('/realtime-report/stock/:denom/index', onHttpGetByDenom);
64 router.get('/realtime-report/stock/:denom/index/:format', onHttpGetByDenom); 65 router.get('/realtime-report/stock/:denom/index/:format', onHttpGetByDenom);
65 router.get('/realtime-report/stock/:denom/total', onHttpGetTotalByDenom); 66 router.get('/realtime-report/stock/:denom/total', onHttpGetTotalByDenom);
66 67
67 httpServer = http.createServer(router).listen(config.httpserver.listen_port); 68 httpServer = http.createServer(router).listen(config.httpserver.listen_port);
68 console.log('HTTP server listens on port ' + config.httpserver.listen_port); 69 console.log('HTTP server listens on port ' + config.httpserver.listen_port);
69 } 70 }
70 71
71 function start(_config, _logger) { 72 function start(_config, _logger) {
72 config = _config; 73 config = _config;
73 logger = _logger; 74 logger = _logger;
74 75
75 redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host); 76 redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host);
76 77
77 redisClient.on("error", function (err) { 78 redisClient.on("error", function (err) {
78 logger.error(name + "- redis client error: " + err); 79 logger.error(name + "- redis client error: " + err);
79 }); 80 });
80 81
81 82
82 logger.info('Starting http server'); 83 logger.info('Starting http server');
83 84
84 createServer(); 85 createServer();
85 } 86 }
86 87
87 exports.start = start; 88 exports.start = start;
88 89