Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/body/index.js b/node_modules/body/index.js
new file mode 100644
index 0000000..eda2511
--- /dev/null
+++ b/node_modules/body/index.js
@@ -0,0 +1,47 @@
+var rawBody = require("raw-body")
+var cache = require("continuable-cache")
+
+var parseArguments = require("./parse-arguments.js")
+
+var ONE_MB = 1024 * 1024
+var THUNK_KEY = '__npm_body_thunk_cache__';
+
+module.exports = body
+
+function parseBodyThunk(req, res, opts) {
+    return function thunk(callback) {
+        var limit = "limit" in opts ? opts.limit : ONE_MB
+        var contentLength = req.headers ?
+            Number(req.headers["content-length"]) : null;
+
+        rawBody(req, {
+            limit: limit,
+            length: contentLength,
+            encoding: "encoding" in opts ? opts.encoding : true
+        }, callback);
+    };
+}
+
+function body(req, res, opts, callback) {
+    var args = parseArguments(req, res, opts, callback)
+    req = args.req
+    res = args.res
+    opts = args.opts
+    callback = args.callback
+
+    var thunk;
+
+    if (opts.cache) {
+        var thunk = req[THUNK_KEY] ||
+            cache(parseBodyThunk(req, res, opts));
+        req[THUNK_KEY] = thunk;
+    } else {
+        thunk = parseBodyThunk(req, res, opts);
+    }
+
+    if (!callback) {
+        return thunk;
+    }
+
+    thunk(callback);
+}