UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

140 lines (138 loc) 12.5 kB
/* * 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. */ import { trim } from './../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 */ export 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 = trim(line.substr(0, i)).toLowerCase(); val = 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; }; /** * Normalize input headers * * @param headers */ export var normalizeHeaders = function (headers) { if (!headers) { return {}; } var toReturn = {}; for (var i in headers) { toReturn[normalizeName(i)] = headers[i]; } return toReturn; }; // 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 */ export var set = function (headers, name, value, setIFExists) { if (setIFExists === void 0) { setIFExists = false; } var normalizedName = 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; }; /** * Normalize header names according to rfc spec * * @param {string} name - header name */ export 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('-'); }; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9oZWxwZXJzL2hlYWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUdsQyxJQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLFNBQVM7SUFDVCxNQUFNO0lBQ04sTUFBTTtJQUNOLG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsS0FBSztJQUNMLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLE1BQU07SUFDTixlQUFlO0lBQ2YsVUFBVTtJQUNWLGNBQWM7SUFDZCxxQkFBcUI7SUFDckIsU0FBUztJQUNULGFBQWE7SUFDYixZQUFZO0NBQ2IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsSUFBTSxLQUFLLEdBQUcsVUFBQSxPQUFPO0lBQzFCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLEdBQUcsQ0FBQztJQUNSLElBQUksR0FBRyxDQUFDO0lBQ1IsSUFBSSxDQUFDLENBQUM7SUFFTixJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1osT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsSUFBSTtRQUM5QixDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPO1NBQ1I7UUFFRCxJQUFJLE1BQU0s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LENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyRSxDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixDQUFDLENBQUMiLCJmaWxlIjoibGliL3JlcXVlc3QvaGVscGVycy9oZWFkZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOCBieSBGaWxlc3RhY2tcbiAqIFNvbWUgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgdHJpbSB9IGZyb20gJy4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRnNSZXF1ZXN0SGVhZGVycyB9IGZyb20gJy4vLi4vdHlwZXMnO1xuXG5jb25zdCBpZ25vcmVEdXBsaWNhdGVzID0gW1xuICAnZXhwaXJlcycsXG4gICdmcm9tJyxcbiAgJ2hvc3QnLFxuICAnaWYtbW9kaWZpZWQtc2luY2UnLFxuICAnaWYtdW5tb2RpZmllZC1zaW5jZScsXG4gICdhZ2UnLFxuICAnYXV0aG9yaXphdGlvbicsXG4gICdjb250ZW50LWxlbmd0aCcsXG4gICdjb250ZW50LXR5cGUnLFxuICAnZXRhZycsXG4gICdsYXN0LW1vZGlmaWVkJyxcbiAgJ2xvY2F0aW9uJyxcbiAgJ21heC1mb3J3YXJkcycsXG4gICdwcm94eS1hdXRob3JpemF0aW9uJyxcbiAgJ3JlZmVyZXInLFxuICAncmV0cnktYWZ0ZXInLFxuICAndXNlci1hZ2VudCcsXG5dO1xuXG4vKipcbiAqIFBhcnNlIHJlc3BvbnNlIHJhdyBoZWFkZXIgKHhocilcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGVycyAtIHJhdyBoZWFkZXJzIHN0cmluZ1xuICovXG5leHBvcnQgY29uc3QgcGFyc2UgPSBoZWFkZXJzID0+IHtcbiAgbGV0IHBhcnNlZCA9IHt9O1xuICBsZXQga2V5O1xuICBsZXQgdmFsO1xuICBsZXQgaTtcblxuICBpZiAoIWhlYWRlcnMpIHtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG5cbiAgaGVhZGVycy5zcGxpdCgnXFxuJykuZm9yRWFjaChsaW5lID0+IHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gdHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB0cmltKGxpbmUuc3Vic3RyKGkgKyAxKSk7XG5cbiAgICBpZiAoIWtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwYXJzZWRba2V5XSAmJiBpZ25vcmVEdXBsaWNhdGVzLmluZGV4T2Yoa2V5KSA+PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICBwYXJzZWRba2V5XSA9IChwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldIDogW10pLmNvbmNhdChbdmFsXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemUgaW5wdXQgaGVhZGVyc1xuICpcbiAqIEBwYXJhbSBoZWFkZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVIZWFkZXJzID0gKGhlYWRlcnM6IEZzUmVxdWVzdEhlYWRlcnMpOiBGc1JlcXVlc3RIZWFkZXJzID0+IHtcbiAgaWYgKCFoZWFkZXJzKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgdG9SZXR1cm4gPSB7fTtcblxuICBmb3IgKGxldCBpIGluIGhlYWRlcnMpIHtcbiAgICB0b1JldHVybltub3JtYWxpemVOYW1lKGkpXSA9ICBoZWFkZXJzW2ldO1xuICB9XG5cbiAgcmV0dXJuIHRvUmV0dXJuO1xufTtcblxuLy8gZXhwZWN0KHNldCh7fSwgJ3NldC1jb29raWVzJywgJ3ZhbHVlJykpLnRvRXF1YWwoeyAnU2V0LUNvb2tpZXMnOiAndmFsdWUnIH0pO1xuLyoqXG4gKiBTZXQgcmVxdWVzdCBoZWFkZXJzXG4gKlxuICogQHBhcmFtIGhlYWRlcnMgLSBvYmplY3QgY29udGFpbmluZyBoZWFkZXJzXG4gKiBAcGFyYW0gbmFtZSAtIGhlYWRlciBuYW1lXG4gKiBAcGFyYW0gdmFsdWUgLSBoZWFkZXIgdmFsdWVcbiAqIEBwYXJhbSBzZXRJRkV4aXN0cyAtIGRldGVybWluZSBpZiB3ZSBzaG91bGQgY2hhbmdlIGhlYWRlciB2YWx1ZSBpZiBleGlzdHNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldCA9IChoZWFkZXJzOiBGc1JlcXVlc3RIZWFkZXJzLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHNldElGRXhpc3RzID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpO1xuXG4gIGlmICghaGVhZGVycykge1xuICAgIGhlYWRlcnMgPSB7fTtcbiAgfVxuXG4gIC8vIGNsZWFudXAgaGVhZGVycyBmcm9tIHVuZGVmaW5lZCB2YWxzXG4gIGhlYWRlcnMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGhlYWRlcnMpKTtcbiAgaWYgKGhlYWRlcnNbbmFtZV0gPT09IHVuZGVmaW5lZCAmJiBoZWFkZXJzW25vcm1hbGl6ZWROYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgfSBlbHNlIGlmIChzZXRJRkV4aXN0cykge1xuICAgIGRlbGV0ZSBoZWFkZXJzW25hbWVdO1xuICAgIGhlYWRlcnNbbm9ybWFsaXplZE5hbWVdID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gaGVhZGVycztcbn07XG5cbi8qKlxuICogTm9ybWFsaXplIGhlYWRlciBuYW1lcyBhY2NvcmRpbmcgdG8gcmZjIHNwZWNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIGhlYWRlciBuYW1lXG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVOYW1lID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICAvLyB0aGUgZXhjZXB0aW9uc1xuICBsZXQgcmVzdWx0ID0ge1xuICAgICdjb250ZW50LW1kNSc6ICdDb250ZW50LU1ENScsXG4gICAgZG50OiAnRE5UJyxcbiAgICBldGFnOiAnRVRhZycsXG4gICAgJ2xhc3QtZXZlbnQtaWQnOiAnTGFzdC1FdmVudC1JRCcsXG4gICAgdGNuOiAnVENOJyxcbiAgICB0ZTogJ1RFJyxcbiAgICAnd3d3LWF1dGhlbnRpY2F0ZSc6ICdXV1ctQXV0aGVudGljYXRlJyxcbiAgICAneC1kbnNwcmVmZXRjaC1jb250cm9sJzogJ1gtRE5TUHJlZmV0Y2gtQ29udHJvbCcsXG4gIH1bbmFtZS50b0xvd2VyQ2FzZSgpXTtcblxuICBpZiAocmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIHRoZSBkZWZhdWx0XG4gIHJldHVybiBuYW1lXG4gICAgLnNwbGl0KCctJylcbiAgICAubWFwKGZ1bmN0aW9uKHRleHQpIHtcbiAgICAgIHJldHVybiB0ZXh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbiAgICB9KVxuICAgIC5qb2luKCctJyk7XG59O1xuIl19