@webex/http-core 3.0.0-beta.301 → 3.0.0-beta.302
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -128,7 +128,7 @@ function _request(options) {
|
|
|
128
128
|
var user = o.auth.user || o.auth.username;
|
|
129
129
|
var pass = o.auth.pass || o.auth.password;
|
|
130
130
|
var token = btoa("".concat(user, ":").concat(pass));
|
|
131
|
-
params.headers.
|
|
131
|
+
params.headers.Authorization = "Basic ".concat(token);
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_request","options","resolve","params","response","setXhr","bindProgressEvents","setAuth","setCookies","setDefaults","setResponseType","setContentType","setPayload","setQs","logger","debug","method","uri","x","xhr","error","warn","statusCode","processResponseJson","headers","url","body","onprogress","download","emit","bind","catch","o","includes","toUpperCase","XMLHttpRequest","upload","auth","bearer","authorization","user","username","pass","password","token","btoa","jar","withCredentials","defs","cors","timeout","responseType","Blob","ArrayBuffer","json","detect","qs","stringify","ensureBlob","file","ret","type","filename","name","append","form","key","value","v","formData","reduce","fd","FormData","JSON","parse","e"],"sources":["request.shim.js"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\n// Note: several code paths are ignored in this file. As far as I can tell, any\n// error conditions that would provoke those paths are otherwise prevented and\n// reported.\n\nimport {defaults, isArray, pick} from 'lodash';\nimport qs from 'qs';\n\nimport xhr from '../lib/xhr';\nimport detect from '../lib/detect';\n\n/**\n * @name request\n * @param {Object} options\n * @returns {Promise}\n */\nexport default function _request(options) {\n return new Promise((resolve) => {\n const params = pick(\n options,\n 'method',\n 'uri',\n 'withCredentials',\n 'headers',\n 'timeout',\n 'responseType'\n );\n\n // Set `response` to `true` to approximate an `HttpResponse` object\n params.response = true;\n\n setXhr(params);\n bindProgressEvents(params, options);\n setAuth(params, options);\n setCookies(params, options);\n setDefaults(params, options);\n setResponseType(params, options);\n setContentType(params, options);\n setPayload(params, options);\n setQs(params, options);\n\n options.logger.debug(\n `start http ${options.method ? options.method : 'request'} to ${options.uri}`\n );\n\n const x = xhr(params, (error, response) => {\n /* istanbul ignore next */\n if (error) {\n options.logger.warn(\n `XHR error for ${options.method || 'request'} to ${options.uri} :`,\n error\n );\n }\n\n /* istanbul ignore else */\n if (response) {\n if (response.statusCode >= 400) {\n options.logger.warn(\n `http ${options.method ? options.method : 'request'} to ${options.uri} result: ${\n response.statusCode\n }`\n );\n } else {\n options.logger.debug(\n `http ${options.method ? options.method : 'request'} to ${options.uri} result: ${\n response.statusCode\n }`\n );\n }\n response.options = options;\n processResponseJson(response, params);\n resolve(response);\n } else {\n resolve({\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.uri,\n body: error,\n });\n }\n });\n\n x.onprogress = options.download.emit.bind(options.download, 'progress');\n }).catch((error) => {\n options.logger.warn(error);\n\n /* eslint arrow-body-style: [0] */\n /* istanbul ignore next */\n return {\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.uri,\n body: error,\n };\n });\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function bindProgressEvents(params, o) {\n if (params.method && ['PATCH', 'POST', 'PUT'].includes(params.method.toUpperCase())) {\n if (!params.xhr) {\n params.xhr = new XMLHttpRequest();\n }\n params.xhr.upload.onprogress = o.upload.emit.bind(o.upload, 'progress');\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setXhr(params) {\n params.xhr = new XMLHttpRequest();\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setAuth(params, o) {\n if (o.auth) {\n if (o.auth.bearer) {\n params.headers.authorization = `Bearer ${o.auth.bearer}`;\n } else {\n const user = o.auth.user || o.auth.username;\n const pass = o.auth.pass || o.auth.password;\n\n const token = btoa(`${user}:${pass}`);\n\n params.headers.authorization = `Basic ${token}`;\n }\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setCookies(params, o) {\n if (o.jar) {\n params.withCredentials = true;\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setDefaults(params, o) {\n const defs = {\n cors: true,\n // raynos/xhr defaults withCredentials to true if cors is true, so we need\n // to make it explicitly false by default\n withCredentials: false,\n timeout: 0,\n };\n\n defaults(params, pick(o, Object.keys(defs)), defs);\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setResponseType(params, o) {\n if (o.responseType === 'buffer') {\n params.responseType = 'arraybuffer';\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n async function setContentType(params, o) {\n if (o.body instanceof Blob || o.body instanceof ArrayBuffer) {\n o.json = params.json = false;\n params.headers['content-type'] = params.headers['content-type'] || (await detect(o.body));\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setQs(params, o) {\n if (o.qs) {\n params.uri += `?${qs.stringify(o.qs)}`;\n }\n }\n\n /**\n * Converts arraybuffers to blobs before uploading them\n * @param {mixed} file\n * @private\n * @returns {mixed}\n */\n function ensureBlob(file) {\n if (file instanceof ArrayBuffer) {\n const ret = file.type ? new Blob([file], {type: file.type}) : new Blob([file]);\n\n ret.filename = file.filename || file.name || 'untitled';\n\n return ret;\n }\n\n return file;\n }\n\n /**\n * Appends an item to a form\n * @param {FormData} form\n * @param {string} key\n * @param {mixed} value\n * @returns {undefined}\n */\n function append(form, key, value) {\n if (isArray(value)) {\n for (const v of value) {\n append(form, key, v);\n }\n\n return;\n }\n\n value = ensureBlob(value);\n if (value.name) {\n value.filename = value.name;\n form.append(key, value, value.name);\n } else {\n form.append(key, value);\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setPayload(params, o) {\n if ((!('json' in o) || o.json === true) && o.body) {\n params.json = o.body;\n } else if (o.form) {\n params.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n params.body = qs.stringify(o.form);\n Reflect.deleteProperty(params, 'json');\n } else if (o.formData) {\n params.body = Object.keys(o.formData).reduce((fd, key) => {\n const value = o.formData[key];\n\n append(fd, key, value);\n\n return fd;\n }, new FormData());\n } else {\n params.body = o.body;\n Reflect.deleteProperty(params, 'json');\n }\n }\n\n /**\n * @param {Object} response\n * @param {Object} params\n * @private\n * @returns {undefined}\n */\n function processResponseJson(response, params) {\n // If params.json is not defined, xhr won't deserialize the response\n // so we should give it a shot just in case.\n if (!params.json && typeof response.body !== 'object') {\n try {\n response.body = JSON.parse(response.body);\n } catch (e) {\n /* eslint no-empty: [0] */\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_request","options","resolve","params","response","setXhr","bindProgressEvents","setAuth","setCookies","setDefaults","setResponseType","setContentType","setPayload","setQs","logger","debug","method","uri","x","xhr","error","warn","statusCode","processResponseJson","headers","url","body","onprogress","download","emit","bind","catch","o","includes","toUpperCase","XMLHttpRequest","upload","auth","bearer","authorization","user","username","pass","password","token","btoa","Authorization","jar","withCredentials","defs","cors","timeout","responseType","Blob","ArrayBuffer","json","detect","qs","stringify","ensureBlob","file","ret","type","filename","name","append","form","key","value","v","formData","reduce","fd","FormData","JSON","parse","e"],"sources":["request.shim.js"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\n// Note: several code paths are ignored in this file. As far as I can tell, any\n// error conditions that would provoke those paths are otherwise prevented and\n// reported.\n\nimport {defaults, isArray, pick} from 'lodash';\nimport qs from 'qs';\n\nimport xhr from '../lib/xhr';\nimport detect from '../lib/detect';\n\n/**\n * @name request\n * @param {Object} options\n * @returns {Promise}\n */\nexport default function _request(options) {\n return new Promise((resolve) => {\n const params = pick(\n options,\n 'method',\n 'uri',\n 'withCredentials',\n 'headers',\n 'timeout',\n 'responseType'\n );\n\n // Set `response` to `true` to approximate an `HttpResponse` object\n params.response = true;\n\n setXhr(params);\n bindProgressEvents(params, options);\n setAuth(params, options);\n setCookies(params, options);\n setDefaults(params, options);\n setResponseType(params, options);\n setContentType(params, options);\n setPayload(params, options);\n setQs(params, options);\n\n options.logger.debug(\n `start http ${options.method ? options.method : 'request'} to ${options.uri}`\n );\n\n const x = xhr(params, (error, response) => {\n /* istanbul ignore next */\n if (error) {\n options.logger.warn(\n `XHR error for ${options.method || 'request'} to ${options.uri} :`,\n error\n );\n }\n\n /* istanbul ignore else */\n if (response) {\n if (response.statusCode >= 400) {\n options.logger.warn(\n `http ${options.method ? options.method : 'request'} to ${options.uri} result: ${\n response.statusCode\n }`\n );\n } else {\n options.logger.debug(\n `http ${options.method ? options.method : 'request'} to ${options.uri} result: ${\n response.statusCode\n }`\n );\n }\n response.options = options;\n processResponseJson(response, params);\n resolve(response);\n } else {\n resolve({\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.uri,\n body: error,\n });\n }\n });\n\n x.onprogress = options.download.emit.bind(options.download, 'progress');\n }).catch((error) => {\n options.logger.warn(error);\n\n /* eslint arrow-body-style: [0] */\n /* istanbul ignore next */\n return {\n statusCode: 0,\n options,\n headers: options.headers,\n method: options.method,\n url: options.uri,\n body: error,\n };\n });\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function bindProgressEvents(params, o) {\n if (params.method && ['PATCH', 'POST', 'PUT'].includes(params.method.toUpperCase())) {\n if (!params.xhr) {\n params.xhr = new XMLHttpRequest();\n }\n params.xhr.upload.onprogress = o.upload.emit.bind(o.upload, 'progress');\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setXhr(params) {\n params.xhr = new XMLHttpRequest();\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setAuth(params, o) {\n if (o.auth) {\n if (o.auth.bearer) {\n params.headers.authorization = `Bearer ${o.auth.bearer}`;\n } else {\n const user = o.auth.user || o.auth.username;\n const pass = o.auth.pass || o.auth.password;\n\n const token = btoa(`${user}:${pass}`);\n\n params.headers.Authorization = `Basic ${token}`;\n }\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setCookies(params, o) {\n if (o.jar) {\n params.withCredentials = true;\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setDefaults(params, o) {\n const defs = {\n cors: true,\n // raynos/xhr defaults withCredentials to true if cors is true, so we need\n // to make it explicitly false by default\n withCredentials: false,\n timeout: 0,\n };\n\n defaults(params, pick(o, Object.keys(defs)), defs);\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setResponseType(params, o) {\n if (o.responseType === 'buffer') {\n params.responseType = 'arraybuffer';\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n async function setContentType(params, o) {\n if (o.body instanceof Blob || o.body instanceof ArrayBuffer) {\n o.json = params.json = false;\n params.headers['content-type'] = params.headers['content-type'] || (await detect(o.body));\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setQs(params, o) {\n if (o.qs) {\n params.uri += `?${qs.stringify(o.qs)}`;\n }\n }\n\n /**\n * Converts arraybuffers to blobs before uploading them\n * @param {mixed} file\n * @private\n * @returns {mixed}\n */\n function ensureBlob(file) {\n if (file instanceof ArrayBuffer) {\n const ret = file.type ? new Blob([file], {type: file.type}) : new Blob([file]);\n\n ret.filename = file.filename || file.name || 'untitled';\n\n return ret;\n }\n\n return file;\n }\n\n /**\n * Appends an item to a form\n * @param {FormData} form\n * @param {string} key\n * @param {mixed} value\n * @returns {undefined}\n */\n function append(form, key, value) {\n if (isArray(value)) {\n for (const v of value) {\n append(form, key, v);\n }\n\n return;\n }\n\n value = ensureBlob(value);\n if (value.name) {\n value.filename = value.name;\n form.append(key, value, value.name);\n } else {\n form.append(key, value);\n }\n }\n\n /**\n * @param {Object} params\n * @param {Object} o\n * @private\n * @returns {undefined}\n */\n function setPayload(params, o) {\n if ((!('json' in o) || o.json === true) && o.body) {\n params.json = o.body;\n } else if (o.form) {\n params.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n params.body = qs.stringify(o.form);\n Reflect.deleteProperty(params, 'json');\n } else if (o.formData) {\n params.body = Object.keys(o.formData).reduce((fd, key) => {\n const value = o.formData[key];\n\n append(fd, key, value);\n\n return fd;\n }, new FormData());\n } else {\n params.body = o.body;\n Reflect.deleteProperty(params, 'json');\n }\n }\n\n /**\n * @param {Object} response\n * @param {Object} params\n * @private\n * @returns {undefined}\n */\n function processResponseJson(response, params) {\n // If params.json is not defined, xhr won't deserialize the response\n // so we should give it a shot just in case.\n if (!params.json && typeof response.body !== 'object') {\n try {\n response.body = JSON.parse(response.body);\n } catch (e) {\n /* eslint no-empty: [0] */\n }\n }\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/http-core",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.302",
|
|
4
4
|
"description": "Core HTTP library for the Cisco Webex",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,18 +24,18 @@
|
|
|
24
24
|
]
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
28
|
-
"@webex/test-helper-file": "3.0.0-beta.
|
|
29
|
-
"@webex/test-helper-make-local-url": "3.0.0-beta.
|
|
30
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
27
|
+
"@webex/test-helper-chai": "3.0.0-beta.302",
|
|
28
|
+
"@webex/test-helper-file": "3.0.0-beta.302",
|
|
29
|
+
"@webex/test-helper-make-local-url": "3.0.0-beta.302",
|
|
30
|
+
"@webex/test-helper-mocha": "3.0.0-beta.302",
|
|
31
31
|
"sinon": "^9.2.4"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@webex/common": "3.0.0-beta.
|
|
35
|
-
"@webex/http-core": "3.0.0-beta.
|
|
36
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
38
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
34
|
+
"@webex/common": "3.0.0-beta.302",
|
|
35
|
+
"@webex/http-core": "3.0.0-beta.302",
|
|
36
|
+
"@webex/internal-plugin-device": "3.0.0-beta.302",
|
|
37
|
+
"@webex/test-helper-test-users": "3.0.0-beta.302",
|
|
38
|
+
"@webex/webex-core": "3.0.0-beta.302",
|
|
39
39
|
"file-type": "^16.0.1",
|
|
40
40
|
"global": "^4.4.0",
|
|
41
41
|
"is-function": "^1.0.1",
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {assert} from '@webex/test-helper-chai';
|
|
2
|
+
import window from 'global/window';
|
|
3
|
+
import request from '@webex/http-core/src/request/request.shim';
|
|
4
|
+
import {EventEmitter} from 'events';
|
|
5
|
+
|
|
6
|
+
describe('Request shim', () => {
|
|
7
|
+
describe('#setAuth()', () => {
|
|
8
|
+
it('sets auth header', () => {
|
|
9
|
+
|
|
10
|
+
class DummyXMLHttpRequest {
|
|
11
|
+
upload = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
window.XMLHttpRequest = DummyXMLHttpRequest;
|
|
15
|
+
|
|
16
|
+
const options = {upload: new EventEmitter(), headers: [], method: 'post', ...options, auth: {user: 'test', pass: 'pw'}};
|
|
17
|
+
|
|
18
|
+
request(options);
|
|
19
|
+
|
|
20
|
+
assert.equal(options.headers.Authorization, 'Basic dGVzdDpwdw==');
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
});
|