Commit 388d74ae99cd9c4eb3fc4b195780be7dd8950c8b
1 parent
2379f3a6b3
Exists in
master
json and xml output
Showing 2 changed files with 14 additions and 3 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'); | ||
11 | |||
10 | var httpServer; | 12 | var httpServer; |
11 | var config; | 13 | var config; |
12 | var logger; | 14 | var logger; |
13 | 15 | ||
16 | function formatData(data, format) { | ||
17 | if (format == 'xml') { | ||
18 | return js2xmlparser('stock', data); | ||
19 | } | ||
20 | return JSON.stringify(data); | ||
21 | } | ||
22 | |||
14 | function onHttpGetByDenom(request, response) { | 23 | function onHttpGetByDenom(request, response) { |
15 | var key = 'stock.dompul.by-denom.' + request.params.denom; | 24 | var key = 'stock.dompul.by-denom.' + request.params.denom; |
16 | 25 | ||
17 | redisClient.hgetall(key, function(err, obj) { | 26 | redisClient.hgetall(key, function(err, obj) { |
18 | 27 | ||
19 | if (err) { | 28 | if (err) { |
20 | response.end(); | 29 | response.end(); |
21 | return; | 30 | return; |
22 | } | 31 | } |
23 | 32 | ||
24 | if (request.params.total != true) { | 33 | if (request.params.total != true) { |
25 | response.end(JSON.stringify(obj)); | 34 | response.end(formatData(obj, request.params.format)); |
26 | return; | 35 | return; |
27 | } | 36 | } |
28 | 37 | ||
29 | var chips = Object.getOwnPropertyNames(obj); | 38 | var chips = Object.getOwnPropertyNames(obj); |
30 | var chipsCount = chips.length; | 39 | var chipsCount = chips.length; |
31 | var total = 0; | 40 | var total = 0; |
32 | 41 | ||
33 | for (var i = 0; i < chipsCount; i++) { | 42 | for (var i = 0; i < chipsCount; i++) { |
34 | total = total + parseInt(obj[chips[i]]); | 43 | total = total + parseInt(obj[chips[i]]); |
35 | } | 44 | } |
36 | response.end(total.toString()); | 45 | response.end(total.toString()); |
37 | }); | 46 | }); |
38 | } | 47 | } |
39 | 48 | ||
40 | 49 | ||
41 | function createServer() { | 50 | function createServer() { |
42 | router.get('/denoms/:denom', onHttpGetByDenom); | 51 | router.get('/denoms/:denom/index/:format', onHttpGetByDenom); |
52 | |||
43 | router.get('/denoms/:denom/total', function(req, res) { | 53 | router.get('/denoms/:denom/total', function(req, res) { |
44 | req.params.total = true; | 54 | req.params.total = true; |
45 | onHttpGetByDenom(req, res); | 55 | onHttpGetByDenom(req, res); |
46 | }); | 56 | }); |
47 | 57 | ||
48 | httpServer = http.createServer(router).listen(config.httpserver.listen_port); | 58 | httpServer = http.createServer(router).listen(config.httpserver.listen_port); |
49 | console.log('HTTP server listens on port ' + config.httpserver.listen_port); | 59 | console.log('HTTP server listens on port ' + config.httpserver.listen_port); |
50 | } | 60 | } |
51 | 61 | ||
52 | function start(_config, _logger) { | 62 | function start(_config, _logger) { |
53 | config = _config; | 63 | config = _config; |
54 | logger = _logger; | 64 | logger = _logger; |
55 | 65 | ||
56 | redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host); | 66 | redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host); |
57 | 67 | ||
58 | redisClient.on("error", function (err) { | 68 | redisClient.on("error", function (err) { |
59 | logger.error(name + "- redis client error: " + err); | 69 | logger.error(name + "- redis client error: " + err); |
60 | }); | 70 | }); |
61 | 71 | ||
62 | 72 | ||
63 | logger.info('Starting http server'); | 73 | logger.info('Starting http server'); |
64 | 74 | ||
65 | createServer(); | 75 | createServer(); |
66 | } | 76 | } |
67 | 77 | ||
68 | exports.start = start; | 78 | exports.start = start; |
69 | 79 |
package.json
1 | { | 1 | { |
2 | "name": "store-dompul-stock", | 2 | "name": "store-dompul-stock", |
3 | "version": "0.0.1", | 3 | "version": "0.0.1", |
4 | "description": "Store DOMPUL stock in Redis", | 4 | "description": "Store DOMPUL stock in Redis", |
5 | "main": "index.js", | 5 | "main": "index.js", |
6 | "scripts": { | 6 | "scripts": { |
7 | "start": "node index.js", | 7 | "start": "node index.js", |
8 | "test": "mocha" | 8 | "test": "mocha" |
9 | }, | 9 | }, |
10 | "repository": { | 10 | "repository": { |
11 | "type": "git", | 11 | "type": "git", |
12 | "url": "git@gitlab.kodesumber.com:reload97/store-dompul-stock.git" | 12 | "url": "git@gitlab.kodesumber.com:reload97/store-dompul-stock.git" |
13 | }, | 13 | }, |
14 | "keywords": [ | 14 | "keywords": [ |
15 | "Reload97", | 15 | "Reload97", |
16 | "ST24", | 16 | "ST24", |
17 | "PPOB", | 17 | "PPOB", |
18 | "Server", | 18 | "Server", |
19 | "Pulsa" | 19 | "Pulsa" |
20 | ], | 20 | ], |
21 | "author": "Adhidarma Hadiwinoto", | 21 | "author": "Adhidarma Hadiwinoto", |
22 | "license": "BSD", | 22 | "license": "BSD", |
23 | "dependencies": { | 23 | "dependencies": { |
24 | "redis": "~0.12.1", | 24 | "redis": "~0.12.1", |
25 | "hiredis": "~0.3.0", | 25 | "hiredis": "~0.3.0", |
26 | "iniparser": "~1.0.5", | 26 | "iniparser": "~1.0.5", |
27 | "winston": "~1.0.0", | 27 | "winston": "~1.0.0", |
28 | "node-simple-router": "~0.9.4-2" | 28 | "node-simple-router": "~0.9.4-2", |
29 | "js2xmlparser": "~0.1.9" | ||
29 | } | 30 | } |
30 | } | 31 | } |
31 | 32 |