UNPKG

jack2

Version:

HTTP middleware for Node.js/Q-JSGI/JSGI2

64 lines (59 loc) 2.17 kB
function getBody(body) { var buffer = ""; return Q.when( body.forEach(function(data) { buffer += data; }), function() { return buffer; } ); } exports.Dump = function Dump(app) { return function(request) { var reqBodyP = null;//getBody(request.body); return Q.when(app(request), function(response) { var resBodyP = null;//getBody(response.body); Q.all([reqBodyP, resBodyP]).spread(function (reqBody, resBody) { console.log("REQUEST:", request.method, request.url, request.headers); reqBody.split("\n").forEach(function(line) { console.log(" > " + line); }); console.log("RESPONSE:", response.status, response.headers); resBody.split("\n").forEach(function(line) { console.log(" < " + line); }); console.log(Array(81).join("=")); }); return response; }); } } exports.SimpleProxy = function SimpleProxy(transform) { return function(request) { request = transform(request) || request; request.headers.host = request.host + ":" + request.port; request.url = request.scheme + "://" + request.headers.host + request.path; // console.log(request); return Q_HTTP.request(request); } } exports.SimpleCache = function SimpleCache(app) { var cache = {}; return app; return function(request) { var key = JSON.stringify(request); if (key in cache) { console.log("cache hit!", key); return cache[key]; } else { console.log("cache miss.", key); return app(request); return Q.when(app(request), function(response) { // if (response.status >= 200 && response.status < 300) { // Q.when(getBody(response.body), function(body) { // response.body = [body]; // cache[key] = response; // }); // } return response; }); } } }