Merge "LOG SQL dump files getting installed"
[sdnc/oam.git] / dgbuilder / dgeflows / node_modules / serve-index / node_modules / http-errors / node_modules / statuses / index.js
1
2 var codes = require('./codes.json');
3
4 module.exports = status;
5
6 // [Integer...]
7 status.codes = Object.keys(codes).map(function (code) {
8   code = ~~code;
9   var msg = codes[code];
10   status[code] = msg;
11   status[msg] = status[msg.toLowerCase()] = code;
12   return code;
13 });
14
15 // status codes for redirects
16 status.redirect = {
17   300: true,
18   301: true,
19   302: true,
20   303: true,
21   305: true,
22   307: true,
23   308: true,
24 };
25
26 // status codes for empty bodies
27 status.empty = {
28   204: true,
29   205: true,
30   304: true,
31 };
32
33 // status codes for when you should retry the request
34 status.retry = {
35   502: true,
36   503: true,
37   504: true,
38 };
39
40 function status(code) {
41   if (typeof code === 'number') {
42     if (!status[code]) throw new Error('invalid status code: ' + code);
43     return code;
44   }
45
46   if (typeof code !== 'string') {
47     throw new TypeError('code must be a number or string');
48   }
49
50   // '403'
51   var n = parseInt(code, 10)
52   if (!isNaN(n)) {
53     if (!status[n]) throw new Error('invalid status code: ' + n);
54     return n;
55   }
56
57   n = status[code.toLowerCase()];
58   if (!n) throw new Error('invalid status message: "' + code + '"');
59   return n;
60 }