/**
 * 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;
