36 lines
		
	
	
		
			815 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			815 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| '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;
 |