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.
35 lines
815 B
35 lines
815 B
'use strict'; |
|
|
|
var Headers = function() { |
|
this.clear(); |
|
}; |
|
|
|
Headers.prototype.ALLOWED_DUPLICATES = ['set-cookie', 'set-cookie2', 'warning', 'www-authenticate']; |
|
|
|
Headers.prototype.clear = function() { |
|
this._sent = {}; |
|
this._lines = []; |
|
}; |
|
|
|
Headers.prototype.set = function(name, value) { |
|
if (value === undefined) return; |
|
|
|
name = this._strip(name); |
|
value = this._strip(value); |
|
|
|
var key = name.toLowerCase(); |
|
if (!this._sent.hasOwnProperty(key) || this.ALLOWED_DUPLICATES.indexOf(key) >= 0) { |
|
this._sent[key] = true; |
|
this._lines.push(name + ': ' + value + '\r\n'); |
|
} |
|
}; |
|
|
|
Headers.prototype.toString = function() { |
|
return this._lines.join(''); |
|
}; |
|
|
|
Headers.prototype._strip = function(string) { |
|
return string.toString().replace(/^ */, '').replace(/ *$/, ''); |
|
}; |
|
|
|
module.exports = Headers;
|
|
|