Commit 408d15fe30e36b81517352cb41de09d352738e88
1 parent
f83d14a265
Exists in
master
handling /index without specifying format
Showing 1 changed file with 1 additions and 0 deletions Inline Diff
httpserver.js
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 |