Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / response-time / index.js
1 /*!
2  * response-time
3  * Copyright(c) 2011 TJ Holowaychuk
4  * Copyright(c) 2014 Jonathan Ong
5  * Copyright(c) 2014-2015 Douglas Christopher Wilson
6  * MIT Licensed
7  */
8
9 'use strict'
10
11 /**
12  * Module dependencies
13  * @api private
14  */
15
16 var deprecate = require('depd')('response-time')
17 var onHeaders = require('on-headers')
18
19 /**
20  * Module exports
21  */
22
23 module.exports = responseTime
24
25 /**
26  * Reponse time:
27  *
28  * Adds the `X-Response-Time` header displaying the response
29  * duration in milliseconds.
30  *
31  * @param {object} [options]
32  * @param {number} [options.digits=3]
33  * @return {function}
34  * @api public
35  */
36
37 function responseTime (options) {
38   var opts = options || {}
39
40   if (typeof options === 'number') {
41     // back-compat single number argument
42     deprecate('number argument: use {digits: ' + JSON.stringify(options) + '} instead')
43     opts = { digits: options }
44   }
45
46   // get the function to invoke
47   var fn = typeof opts !== 'function'
48     ? createSetHeader(opts)
49     : opts
50
51   return function responseTime (req, res, next) {
52     var startAt = process.hrtime()
53
54     onHeaders(res, function onHeaders () {
55       var diff = process.hrtime(startAt)
56       var time = diff[0] * 1e3 + diff[1] * 1e-6
57
58       fn(req, res, time)
59     })
60
61     next()
62   }
63 }
64
65 /**
66  * Create function to set respoonse time header.
67  * @api private
68  */
69
70 function createSetHeader (options) {
71   // response time digits
72   var digits = options.digits !== undefined
73     ? options.digits
74     : 3
75
76   // header name
77   var header = options.header || 'X-Response-Time'
78
79   // display suffix
80   var suffix = options.suffix !== undefined
81     ? Boolean(options.suffix)
82     : true
83
84   return function setResponseHeader (req, res, time) {
85     if (res.getHeader(header)) {
86       return
87     }
88
89     var val = time.toFixed(digits)
90
91     if (suffix) {
92       val += 'ms'
93     }
94
95     res.setHeader(header, val)
96   }
97 }