UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

147 lines (145 loc) 12.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.normalizeName = exports.set = exports.normalizeHeaders = exports.parse = void 0; /* * Copyright (c) 2018 by Filestack * Some rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var utils_1 = require("./../utils"); var ignoreDuplicates = [ 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'age', 'authorization', 'content-length', 'content-type', 'etag', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent', ]; /** * Parse response raw header (xhr) * * @param {string} headers - raw headers string */ var parse = function (headers) { var parsed = {}; var key; var val; var i; if (!headers) { return parsed; } headers.split('\n').forEach(function (line) { i = line.indexOf(':'); key = (0, utils_1.trim)(line.substr(0, i)).toLowerCase(); val = (0, utils_1.trim)(line.substr(i + 1)); if (!key) { return; } if (parsed[key] && ignoreDuplicates.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; }; exports.parse = parse; /** * Normalize input headers * * @param headers */ var normalizeHeaders = function (headers) { if (!headers) { return {}; } var toReturn = {}; for (var i in headers) { toReturn[(0, exports.normalizeName)(i)] = headers[i]; } return toReturn; }; exports.normalizeHeaders = normalizeHeaders; // expect(set({}, 'set-cookies', 'value')).toEqual({ 'Set-Cookies': 'value' }); /** * Set request headers * * @param headers - object containing headers * @param name - header name * @param value - header value * @param setIFExists - determine if we should change header value if exists */ var set = function (headers, name, value, setIFExists) { if (setIFExists === void 0) { setIFExists = false; } var normalizedName = (0, exports.normalizeName)(name); if (!headers) { headers = {}; } // cleanup headers from undefined vals headers = JSON.parse(JSON.stringify(headers)); if (headers[name] === undefined && headers[normalizedName] === undefined) { headers[normalizedName] = value; } else if (setIFExists) { delete headers[name]; headers[normalizedName] = value; } return headers; }; exports.set = set; /** * Normalize header names according to rfc spec * * @param {string} name - header name */ var normalizeName = function (name) { // the exceptions var result = { 'content-md5': 'Content-MD5', dnt: 'DNT', etag: 'ETag', 'last-event-id': 'Last-Event-ID', tcn: 'TCN', te: 'TE', 'www-authenticate': 'WWW-Authenticate', 'x-dnsprefetch-control': 'X-DNSPrefetch-Control', }[name.toLowerCase()]; if (result) { return result; } // the default return name .split('-') .map(function (text) { return text.charAt(0).toUpperCase() + text.substr(1).toLowerCase(); }) .join('-'); }; exports.normalizeName = normalizeName; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9oZWxwZXJzL2hlYWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsb0NBQWtDO0FBR2xDLElBQU0sZ0JBQWdCLEdBQUc7SUFDdkIsU0FBUztJQUNULE1BQU07SUFDTixNQUFNO0lBQ04sbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixLQUFLO0lBQ0wsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsTUFBTTtJQUNOLGVBQWU7SUFDZixVQUFVO0lBQ1YsY0FBYztJQUNkLHFCQUFxQjtJQUNyQixTQUFTO0lBQ1QsYUFBYTtJQUNiLFlBQVk7Q0FDYixDQUFDO0FBRUY7Ozs7R0FJRztBQUNJLElBQU0sS0FBSyxHQUFHLFVBQUEsT0FBTztJQUMxQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDaEIsSUFBSSxHQUFHLENBQUM7SUFDUixJQUFJLEdBQUcsQ0FBQztJQUNSLElBQUksQ0FBQyxDQUFDO0lBRU4sSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLElBQUk7UUFDOUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsR0FBRyxHQUFHLElBQUEsWUFBSSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUMsR0FBRyxHQUFHLElBQUEsWUFBSSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE9BQU87U0FDUjtRQUVELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGdCQUFn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SSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JFLENBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUMsQ0FBQztBQXhCVyxRQUFBLGFBQWEsaUJBd0J4QiIsImZpbGUiOiJsaWIvcmVxdWVzdC9oZWxwZXJzL2hlYWRlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4IGJ5IEZpbGVzdGFja1xuICogU29tZSByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyB0cmltIH0gZnJvbSAnLi8uLi91dGlscyc7XG5pbXBvcnQgeyBGc1JlcXVlc3RIZWFkZXJzIH0gZnJvbSAnLi8uLi90eXBlcyc7XG5cbmNvbnN0IGlnbm9yZUR1cGxpY2F0ZXMgPSBbXG4gICdleHBpcmVzJyxcbiAgJ2Zyb20nLFxuICAnaG9zdCcsXG4gICdpZi1tb2RpZmllZC1zaW5jZScsXG4gICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2FnZScsXG4gICdhdXRob3JpemF0aW9uJyxcbiAgJ2NvbnRlbnQtbGVuZ3RoJyxcbiAgJ2NvbnRlbnQtdHlwZScsXG4gICdldGFnJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLFxuICAnbG9jYXRpb24nLFxuICAnbWF4LWZvcndhcmRzJyxcbiAgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsXG4gICdyZXRyeS1hZnRlcicsXG4gICd1c2VyLWFnZW50Jyxcbl07XG5cbi8qKlxuICogUGFyc2UgcmVzcG9uc2UgcmF3IGhlYWRlciAoeGhyKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJzIC0gcmF3IGhlYWRlcnMgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZSA9IGhlYWRlcnMgPT4ge1xuICBsZXQgcGFyc2VkID0ge307XG4gIGxldCBrZXk7XG4gIGxldCB2YWw7XG4gIGxldCBpO1xuXG4gIGlmICghaGVhZGVycykge1xuICAgIHJldHVybiBwYXJzZWQ7XG4gIH1cblxuICBoZWFkZXJzLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGxpbmUgPT4ge1xuICAgIGkgPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBrZXkgPSB0cmltKGxpbmUuc3Vic3RyKDAsIGkpKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IHRyaW0obGluZS5zdWJzdHIoaSArIDEpKTtcblxuICAgIGlmICgha2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBhcnNlZFtrZXldICYmIGlnbm9yZUR1cGxpY2F0ZXMuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcbiAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VkW2tleV0gPSBwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldICsgJywgJyArIHZhbCA6IHZhbDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZSBpbnB1dCBoZWFkZXJzXG4gKlxuICogQHBhcmFtIGhlYWRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZUhlYWRlcnMgPSAoaGVhZGVyczogRnNSZXF1ZXN0SGVhZGVycyk6IEZzUmVxdWVzdEhlYWRlcnMgPT4ge1xuICBpZiAoIWhlYWRlcnMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB0b1JldHVybiA9IHt9O1xuXG4gIGZvciAobGV0IGkgaW4gaGVhZGVycykge1xuICAgIHRvUmV0dXJuW25vcm1hbGl6ZU5hbWUoaSldID0gIGhlYWRlcnNbaV07XG4gIH1cblxuICByZXR1cm4gdG9SZXR1cm47XG59O1xuXG4vLyBleHBlY3Qoc2V0KHt9LCAnc2V0LWNvb2tpZXMnLCAndmFsdWUnKSkudG9FcXVhbCh7ICdTZXQtQ29va2llcyc6ICd2YWx1ZScgfSk7XG4vKipcbiAqIFNldCByZXF1ZXN0IGhlYWRlcnNcbiAqXG4gKiBAcGFyYW0gaGVhZGVycyAtIG9iamVjdCBjb250YWluaW5nIGhlYWRlcnNcbiAqIEBwYXJhbSBuYW1lIC0gaGVhZGVyIG5hbWVcbiAqIEBwYXJhbSB2YWx1ZSAtIGhlYWRlciB2YWx1ZVxuICogQHBhcmFtIHNldElGRXhpc3RzIC0gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBjaGFuZ2UgaGVhZGVyIHZhbHVlIGlmIGV4aXN0c1xuICovXG5leHBvcnQgY29uc3Qgc2V0ID0gKGhlYWRlcnM6IEZzUmVxdWVzdEhlYWRlcnMsIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgc2V0SUZFeGlzdHMgPSBmYWxzZSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG5cbiAgaWYgKCFoZWFkZXJzKSB7XG4gICAgaGVhZGVycyA9IHt9O1xuICB9XG5cbiAgLy8gY2xlYW51cCBoZWFkZXJzIGZyb20gdW5kZWZpbmVkIHZhbHNcbiAgaGVhZGVycyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaGVhZGVycykpO1xuICBpZiAoaGVhZGVyc1tuYW1lXSA9PT0gdW5kZWZpbmVkICYmIGhlYWRlcnNbbm9ybWFsaXplZE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICBoZWFkZXJzW25vcm1hbGl6ZWROYW1lXSA9IHZhbHVlO1xuICB9IGVsc2UgaWYgKHNldElGRXhpc3RzKSB7XG4gICAgZGVsZXRlIGhlYWRlcnNbbmFtZV07XG4gICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBoZWFkZXJzO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemUgaGVhZGVyIG5hbWVzIGFjY29yZGluZyB0byByZmMgc3BlY1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gaGVhZGVyIG5hbWVcbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZU5hbWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gIC8vIHRoZSBleGNlcHRpb25zXG4gIGxldCByZXN1bHQgPSB7XG4gICAgJ2NvbnRlbnQtbWQ1JzogJ0NvbnRlbnQtTUQ1JyxcbiAgICBkbnQ6ICdETlQnLFxuICAgIGV0YWc6ICdFVGFnJyxcbiAgICAnbGFzdC1ldmVudC1pZCc6ICdMYXN0LUV2ZW50LUlEJyxcbiAgICB0Y246ICdUQ04nLFxuICAgIHRlOiAnVEUnLFxuICAgICd3d3ctYXV0aGVudGljYXRlJzogJ1dXVy1BdXRoZW50aWNhdGUnLFxuICAgICd4LWRuc3ByZWZldGNoLWNvbnRyb2wnOiAnWC1ETlNQcmVmZXRjaC1Db250cm9sJyxcbiAgfVtuYW1lLnRvTG93ZXJDYXNlKCldO1xuXG4gIGlmIChyZXN1bHQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gdGhlIGRlZmF1bHRcbiAgcmV0dXJuIG5hbWVcbiAgICAuc3BsaXQoJy0nKVxuICAgIC5tYXAoZnVuY3Rpb24odGV4dCkge1xuICAgICAgcmV0dXJuIHRleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO1xuICAgIH0pXG4gICAgLmpvaW4oJy0nKTtcbn07XG4iXX0=