70 lines
1.3 KiB
JavaScript
70 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;
|
|
}; |