Commit 388d74ae99cd9c4eb3fc4b195780be7dd8950c8b

Authored by Adhidarma Hadiwinoto
1 parent 2379f3a6b3
Exists in master

json and xml output

Showing 2 changed files with 14 additions and 3 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');
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
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