From 6e223af4ea05b4d77af39da25b4679c58011699d Mon Sep 17 00:00:00 2001 From: Douglas Christopher Wilson Date: Tue, 16 Sep 2014 10:29:12 -0700 Subject: [PATCH] Add header option for custom header name closes #3 --- HISTORY.md | 1 + README.md | 6 +++++- index.js | 9 +++++++-- package.json | 8 +++++++- test/test.js | 16 ++++++++++++++++ 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 12450d4..ff91d48 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,7 @@ unreleased ========== + * Add `header` option for custom header name * Change `digits` argument to an `options` argument 2.0.1 / 2014-08-10 diff --git a/README.md b/README.md index 598ecb9..713ce46 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Test Coverage][coveralls-image]][coveralls-url] [![Gratipay][gratipay-image]][gratipay-url] -X-Response-Time header for node.js +Response time header for node.js ## Installation @@ -33,6 +33,10 @@ Returns middleware that adds a `X-Response-Time` header to responses. The fixed number of digits to include in the output, which is always in milliseconds, defaults to `3` (ex: `2.300ms`). +##### header + +The name of the header to set, defaults to `X-Response-Time`. + ## Examples ### express/connect diff --git a/index.js b/index.js index 105568d..54a8ec2 100644 --- a/index.js +++ b/index.js @@ -39,16 +39,21 @@ module.exports = function responseTime(options) { ? options.digits : 3 + // header name + var header = options.header || 'X-Response-Time' + return function responseTime(req, res, next) { var startAt = process.hrtime() onHeaders(res, function () { - if (this.getHeader('X-Response-Time')) return; + if (this.getHeader(header)) { + return + } var diff = process.hrtime(startAt) var ms = diff[0] * 1e3 + diff[1] * 1e-6 - this.setHeader('X-Response-Time', ms.toFixed(digits) + 'ms') + this.setHeader(header, ms.toFixed(digits) + 'ms') }) next() diff --git a/package.json b/package.json index 6a84d90..24829c1 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,18 @@ { "name": "response-time", - "description": "X-Response-Time header for node.js", + "description": "Response time header for node.js", "version": "2.0.1", "author": "Jonathan Ong (http://jongleberry.com)", "contributors": [ "Douglas Christopher Wilson " ], "license": "MIT", + "keywords": [ + "http", + "res", + "response time", + "x-response-time" + ], "repository": "expressjs/response-time", "dependencies": { "depd": "0.4.5", diff --git a/test/test.js b/test/test.js index eef9bf1..968b153 100644 --- a/test/test.js +++ b/test/test.js @@ -70,6 +70,22 @@ describe('responseTime(options)', function () { .expect('X-Response-Time', /^[0-9]+ms$/, done) }) }) + + describe('with "header" option', function () { + it('should default to X-Response-Time', function (done) { + var server = createServer() + request(server) + .get('/') + .expect('X-Response-Time', /^[0-9\.]+ms$/, done) + }) + + it('should allow custom header name', function (done) { + var server = createServer({ header: 'X-Time-Taken' }) + request(server) + .get('/') + .expect('X-Time-Taken', /^[0-9\.]+ms$/, done) + }) + }) }) function createServer(opts, fn) {