var codes = require('./codes.json'); module.exports = status; // [Integer...] status.codes = Object.keys(codes).map(function (code) { code = ~~code; var msg = codes[code]; status[code] = msg; status[msg] = status[msg.toLowerCase()] = code; return code; }); // status codes for redirects status.redirect = { 300: true, 301: true, 302: true, 303: true, 305: true, 307: true, 308: true, }; // status codes for empty bodies status.empty = { 204: true, 205: true, 304: true, }; // status codes for when you should retry the request status.retry = { 502: true, 503: true, 504: true, }; function status(code) { if (typeof code === 'number') { if (!status[code]) throw new Error('invalid status code: ' + code); return code; } if (typeof code !== 'string') { throw new TypeError('code must be a number or string'); } // '403' var n = parseInt(code, 10) if (!isNaN(n)) { if (!status[n]) throw new Error('invalid status code: ' + n); return n; } n = status[code.toLowerCase()]; if (!n) throw new Error('invalid status message: "' + code + '"'); return n; }