Skip to content

Commit

Permalink
Add header option for custom header name
Browse files Browse the repository at this point in the history
closes #3
  • Loading branch information
dougwilson committed Sep 16, 2014
1 parent dd7f841 commit 6e223af
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 4 deletions.
1 change: 1 addition & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand Down
9 changes: 7 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
8 changes: 7 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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 <[email protected]> (http://jongleberry.com)",
"contributors": [
"Douglas Christopher Wilson <[email protected]>"
],
"license": "MIT",
"keywords": [
"http",
"res",
"response time",
"x-response-time"
],
"repository": "expressjs/response-time",
"dependencies": {
"depd": "0.4.5",
Expand Down
16 changes: 16 additions & 0 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 6e223af

Please sign in to comment.