保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 23b60dc1975db38c280d8a123aff97544d1673e0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/*!
 * statuses
 * Copyright(c) 2014 Jonathan Ong
 * Copyright(c) 2016 Douglas Christopher Wilson
 * MIT Licensed
 */
 
'use strict'
 
/**
 * Module dependencies.
 * @private
 */
 
var codes = require('./codes.json')
 
/**
 * Module exports.
 * @public
 */
 
module.exports = status
 
// status code to message map
status.STATUS_CODES = codes
 
// array of status codes
status.codes = populateStatusesMap(status, codes)
 
// 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
}
 
/**
 * Populate the statuses map for given codes.
 * @private
 */
 
function populateStatusesMap (statuses, codes) {
  var arr = []
 
  Object.keys(codes).forEach(function forEachCode (code) {
    var message = codes[code]
    var status = Number(code)
 
    // Populate properties
    statuses[status] = message
    statuses[message] = status
    statuses[message.toLowerCase()] = status
 
    // Add to array
    arr.push(status)
  })
 
  return arr
}
 
/**
 * Get the status code.
 *
 * Given a number, this will throw if it is not a known status
 * code, otherwise the code will be returned. Given a string,
 * the string will be parsed for a number and return the code
 * if valid, otherwise will lookup the code assuming this is
 * the status message.
 *
 * @param {string|number} code
 * @returns {number}
 * @public
 */
 
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
}