From 2379f3a6b3589e1d71959ab463611ff6a97128e4 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <gua@adhisimon.org>
Date: Fri, 10 Apr 2015 16:27:58 +0700
Subject: [PATCH] http report

---
 httpserver.js | 53 +++++++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 43 insertions(+), 10 deletions(-)

diff --git a/httpserver.js b/httpserver.js
index 3e43ea7..a5673bc 100644
--- a/httpserver.js
+++ b/httpserver.js
@@ -1,23 +1,49 @@
-var config;
-var logger;
 var name = require('path').basename(__filename);
+
+var redis = require('redis');
+var redisClient;
+
 var http = require('http');
 var nsr = require('node-simple-router');
 var router = nsr();
-var httpServer;
 
-function onGetChipsIndex(request, response) {
-    response.end();
-}
+var httpServer;
+var config;
+var logger;
 
-function onGetDenomsIndex(request, response) {
-    response.end();
+function onHttpGetByDenom(request, response) {
+    var key = 'stock.dompul.by-denom.' + request.params.denom;
+    
+    redisClient.hgetall(key, function(err, obj) {
+        
+        if (err) {
+            response.end();
+            return;
+        }
+        
+        if (request.params.total != true) {
+            response.end(JSON.stringify(obj));
+            return;
+        }
+        
+        var chips = Object.getOwnPropertyNames(obj);
+        var chipsCount = chips.length;
+        var total = 0;
+        
+        for (var i = 0; i < chipsCount; i++) {
+            total = total + parseInt(obj[chips[i]]);
+        }
+        response.end(total.toString());
+    });
 }
 
 
 function createServer() {
-    router.get('/chips', onGetChipsIndex);
-    router.get('/denoms', onGetDenomsIndex);
+    router.get('/denoms/:denom', onHttpGetByDenom);
+    router.get('/denoms/:denom/total', function(req, res) {
+        req.params.total = true;
+        onHttpGetByDenom(req, res);
+    });
     
     httpServer = http.createServer(router).listen(config.httpserver.listen_port);
     console.log('HTTP server listens on port ' + config.httpserver.listen_port);
@@ -27,6 +53,13 @@ function start(_config, _logger) {
     config = _config;
     logger = _logger;
     
+    redisClient = redis.createClient(config.globals.redis_port, config.globals.redis_host);
+    
+    redisClient.on("error", function (err) {
+        logger.error(name + "- redis client error: " + err);
+    });
+
+
     logger.info('Starting http server');
     
     createServer();
-- 
1.9.0