72 lines
1.3 KiB
JavaScript
72 lines
1.3 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
/**
|
||
|
* Return the mime type for the given `str`.
|
||
|
*
|
||
|
* @param {String} str
|
||
|
* @return {String}
|
||
|
* @api private
|
||
|
*/
|
||
|
|
||
|
exports.type = function(str){
|
||
|
return str.split(/ *; */).shift();
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Return header field parameters.
|
||
|
*
|
||
|
* @param {String} str
|
||
|
* @return {Object}
|
||
|
* @api private
|
||
|
*/
|
||
|
|
||
|
exports.params = function(str){
|
||
|
return str.split(/ *; */).reduce(function(obj, str){
|
||
|
var parts = str.split(/ *= */);
|
||
|
var key = parts.shift();
|
||
|
var val = parts.shift();
|
||
|
|
||
|
if (key && val) obj[key] = val;
|
||
|
return obj;
|
||
|
}, {});
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Parse Link header fields.
|
||
|
*
|
||
|
* @param {String} str
|
||
|
* @return {Object}
|
||
|
* @api private
|
||
|
*/
|
||
|
|
||
|
exports.parseLinks = function(str){
|
||
|
return str.split(/ *, */).reduce(function(obj, str){
|
||
|
var parts = str.split(/ *; */);
|
||
|
var url = parts[0].slice(1, -1);
|
||
|
var rel = parts[1].split(/ *= */)[1].slice(1, -1);
|
||
|
obj[rel] = url;
|
||
|
return obj;
|
||
|
}, {});
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Strip content related fields from `header`.
|
||
|
*
|
||
|
* @param {Object} header
|
||
|
* @return {Object} header
|
||
|
* @api private
|
||
|
*/
|
||
|
|
||
|
exports.cleanHeader = function(header, changesOrigin){
|
||
|
delete header['content-type'];
|
||
|
delete header['content-length'];
|
||
|
delete header['transfer-encoding'];
|
||
|
delete header['host'];
|
||
|
// secuirty
|
||
|
if (changesOrigin) {
|
||
|
delete header['authorization'];
|
||
|
delete header['cookie'];
|
||
|
}
|
||
|
return header;
|
||
|
};
|