Sha256: 6350505d1fb8d550707baa7cae667fd395d8dedf17edb303b05892d855b13c64

Contents?: true

Size: 1.36 KB

Versions: 27

Compression:

Stored size: 1.36 KB

Contents

'use strict';

var utils = require('./../utils');

// Headers whose duplicates are ignored by node
// c.f. https://nodejs.org/api/http.html#http_message_headers
var ignoreDuplicateOf = [
  'age', 'authorization', 'content-length', 'content-type', 'etag',
  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
  'last-modified', 'location', 'max-forwards', 'proxy-authorization',
  'referer', 'retry-after', 'user-agent'
];

/**
 * Parse headers into an object
 *
 * ```
 * Date: Wed, 27 Aug 2014 08:58:49 GMT
 * Content-Type: application/json
 * Connection: keep-alive
 * Transfer-Encoding: chunked
 * ```
 *
 * @param {String} headers Headers needing to be parsed
 * @returns {Object} Headers parsed into an object
 */
module.exports = function parseHeaders(headers) {
  var parsed = {};
  var key;
  var val;
  var i;

  if (!headers) { return parsed; }

  utils.forEach(headers.split('\n'), function parser(line) {
    i = line.indexOf(':');
    key = utils.trim(line.substr(0, i)).toLowerCase();
    val = utils.trim(line.substr(i + 1));

    if (key) {
      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
        return;
      }
      if (key === 'set-cookie') {
        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
      } else {
        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
      }
    }
  });

  return parsed;
};

Version data entries

27 entries across 15 versions & 4 rubygems

Version Path
waves_lib-0.1.0 js/node_modules/axios/lib/helpers/parseHeaders.js
reed_sdk-1.0.1 node_modules/axios/lib/helpers/parseHeaders.js
reed_sdk-1.0.0 node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.4 lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.4 lib/authing_ruby/test/js_sdk_test/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.3 lib/authing_ruby/test/js_sdk_test/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.3 lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.2 lib/authing_ruby/test/js_sdk_test/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.2 lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.1 lib/authing_ruby/test/js_sdk_test/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.1 lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.0 lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.1.0 lib/authing_ruby/test/js_sdk_test/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.0.9 lib/authing_ruby/test/js_sdk_test/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.0.9 lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.0.8 lib/authing_ruby/test/js_sdk_test/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.0.8 lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.0.7 lib/authing_ruby/test/js_sdk_test/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.0.7 lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/node_modules/axios/lib/helpers/parseHeaders.js
authing_ruby-1.0.6 lib/authing_ruby/test/js_sdk_test/node_modules/authing-js-sdk/node_modules/axios/lib/helpers/parseHeaders.js