All files / engine/Source/Core parseResponseHeaders.js

100% Statements 13/13
100% Branches 4/4
100% Functions 1/1
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38                            66x   66x 3x     63x   63x 313x     313x 313x 252x 252x 252x       63x      
/**
 * Parses the result of XMLHttpRequest's getAllResponseHeaders() method into
 * a dictionary.
 *
 * @function parseResponseHeaders
 *
 * @param {string} headerString The header string returned by getAllResponseHeaders().  The format is
 *                 described here: http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders()-method
 * @returns {object} A dictionary of key/value pairs, where each key is the name of a header and the corresponding value
 *                   is that header's value.
 *
 * @private
 */
function parseResponseHeaders(headerString) {
  const headers = {};
 
  if (!headerString) {
    return headers;
  }
 
  const headerPairs = headerString.split("\u000d\u000a");
 
  for (let i = 0; i < headerPairs.length; ++i) {
    const headerPair = headerPairs[i];
    // Can't use split() here because it does the wrong thing
    // if the header value has the string ": " in it.
    const index = headerPair.indexOf("\u003a\u0020");
    if (index > 0) {
      const key = headerPair.substring(0, index);
      const val = headerPair.substring(index + 2);
      headers[key] = val;
    }
  }
 
  return headers;
}
export default parseResponseHeaders;