utils.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. 'use strict';
  2. /**
  3. * Return the mime type for the given `str`.
  4. *
  5. * @param {String} str
  6. * @return {String}
  7. * @api private
  8. */
  9. exports.type = function(str){
  10. return str.split(/ *; */).shift();
  11. };
  12. /**
  13. * Return header field parameters.
  14. *
  15. * @param {String} str
  16. * @return {Object}
  17. * @api private
  18. */
  19. exports.params = function(str){
  20. return str.split(/ *; */).reduce(function(obj, str){
  21. var parts = str.split(/ *= */);
  22. var key = parts.shift();
  23. var val = parts.shift();
  24. if (key && val) obj[key] = val;
  25. return obj;
  26. }, {});
  27. };
  28. /**
  29. * Parse Link header fields.
  30. *
  31. * @param {String} str
  32. * @return {Object}
  33. * @api private
  34. */
  35. exports.parseLinks = function(str){
  36. return str.split(/ *, */).reduce(function(obj, str){
  37. var parts = str.split(/ *; */);
  38. var url = parts[0].slice(1, -1);
  39. var rel = parts[1].split(/ *= */)[1].slice(1, -1);
  40. obj[rel] = url;
  41. return obj;
  42. }, {});
  43. };
  44. /**
  45. * Strip content related fields from `header`.
  46. *
  47. * @param {Object} header
  48. * @return {Object} header
  49. * @api private
  50. */
  51. exports.cleanHeader = function(header, changesOrigin){
  52. delete header['content-type'];
  53. delete header['content-length'];
  54. delete header['transfer-encoding'];
  55. delete header['host'];
  56. // secuirty
  57. if (changesOrigin) {
  58. delete header['authorization'];
  59. delete header['cookie'];
  60. }
  61. return header;
  62. };