API Docs for:
Show:

File: utils/middleware/createResponseLogger.js

"use strict";

var debug = require("debug")("puavo-ticket:utils/middleware/createResponseLogger");

function noop() {}

/**
 *
 * Add X-Response-Time and log response paths and times with console.log.
 *
 * Adapted from https://github.com/expressjs/response-time
 *
 * @namespace utils.middleware
 * @class createResponseLogger
 * @constructor
 * @return {Function} connect middleware
 */
function createResponseLogger(){
  return function(req, res, next){
    // express Router middlewares can alter this. Save it before continuing.
    var reqUrl = req.url;

    next = next || noop;
    if (res._responseTime) return next();
    var writeHead = res.writeHead;
    var start = Date.now();
    res._responseTime = true;
    res.writeHead = function(){
      var duration = Date.now() - start;
      res.setHeader('X-Response-Time', duration + 'ms');
      debug(req.method + " " + reqUrl + " " + duration + 'ms');
      writeHead.apply(res, arguments);
    };
    next();
  };
}

module.exports = createResponseLogger;