You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
747 B
32 lines
747 B
var trim = function(string) { |
|
return string.replace(/^\s+|\s+$/g, ''); |
|
} |
|
, isArray = function(arg) { |
|
return Object.prototype.toString.call(arg) === '[object Array]'; |
|
} |
|
|
|
module.exports = function (headers) { |
|
if (!headers) |
|
return {} |
|
|
|
var result = {} |
|
|
|
var headersArr = trim(headers).split('\n') |
|
|
|
for (var i = 0; i < headersArr.length; i++) { |
|
var row = headersArr[i] |
|
var index = row.indexOf(':') |
|
, key = trim(row.slice(0, index)).toLowerCase() |
|
, value = trim(row.slice(index + 1)) |
|
|
|
if (typeof(result[key]) === 'undefined') { |
|
result[key] = value |
|
} else if (isArray(result[key])) { |
|
result[key].push(value) |
|
} else { |
|
result[key] = [ result[key], value ] |
|
} |
|
} |
|
|
|
return result |
|
}
|
|
|