UNPKG

1.23 kBJavaScriptView Raw
1const { HTTPError } = require('./error')
2
3// 获取对象的指定键的值,忽略大小写
4const getVal = function(obj, key) {
5 // 传入值转小写形式
6 key = key.toLowerCase()
7 // 找到对象的真实键名
8 let realKey = Object.keys(obj).find(function (k) {
9 return k.toLowerCase() === key
10 })
11
12 return obj[realKey]
13}
14
15/**
16 * 合成成功和错误回调,返回新的函数,用于处理HTTP响应的分支处理
17 * @param {Function} succ 成功回调
18 * @param {Function} fail 错误回调
19 */
20const compose = function(succ, fail) {
21 // 返回新的函数,接收响应对象
22 return function (res) {
23 let { statusCode } = res
24 // 当响应状态码不是200时,调用错误回调
25 if (statusCode < 200 || statusCode >= 300) {
26 let buf = []
27 res.on('data', Array.prototype.push.bind(buf)).on('end', function () {
28 // 将状态码和主体数据传给错误回调
29 fail(new HTTPError(statusCode, Buffer.concat(buf).toString()))
30 })
31 } else {
32 // 调用成功回调,丢弃主体数据
33 res.resume()
34 succ()
35 }
36 }
37}
38
39module.exports = { getVal, compose }
\No newline at end of file