Commit f83d14a26507a006c7ab9cbd470d1003e72cf1c8
1 parent
b3419340d6
Exists in
master
recleaning
Showing 1 changed file with 18 additions and 9 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) { | ||
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(); |