UNPKG

@webex/http-core

Version:

Core HTTP library for the Cisco Webex

92 lines (87 loc) 3.76 kB
"use strict"; var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property"); var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.intercept = intercept; exports.prepareFetchOptions = prepareFetchOptions; var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator")); var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise")); var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify")); var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property")); var _events = require("events"); /* eslint-disable import/prefer-default-export */ /** * @param {Object} options * @param {Array<Object>} interceptors * @param {string} key * @param {Object | undefined} res * @private * @returns {Promise} */ function intercept(options, interceptors, key) { var res = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined; var successKey = "on".concat(key); var errorKey = "on".concat(key, "Error"); return interceptors.reduce(function (promise, interceptor) { return promise.then(function (result) { interceptor.logOptions(options); if (interceptor[successKey]) { return interceptor[successKey](options, result); } return _promise.default.resolve(result); }, function (reason) { interceptor.logOptions(options); if (interceptor[errorKey]) { return interceptor[errorKey](options, reason); } return _promise.default.reject(reason); }); }, _promise.default.resolve(res)); } /** * Prepare options for a fetch. * @param {object} options * @returns {Promise} */ function prepareFetchOptions(_x) { return _prepareFetchOptions.apply(this, arguments); } function _prepareFetchOptions() { _prepareFetchOptions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(options) { return _regenerator.default.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: if (options.url) { options.uri = options.url; options.url = null; } options.headers = options.headers || {}; if (options.json) { // don't override existing accept header declared by user options.headers.accept = options.headers.accept || options.headers.Accept || 'application/json'; // don't override existing content-type header declared by user if (options.method !== 'GET' && options.method !== 'HEAD') { options.headers['content-type'] = options.headers['content-type'] || options.headers['Content-Type'] || 'application/json'; options.body = (0, _stringify.default)(options.json === true ? options.body : options.json); } } else if (options.json !== undefined) { (0, _deleteProperty.default)(options, 'json'); } options.download = new _events.EventEmitter(); options.upload = new _events.EventEmitter(); options.keepalive = true; return _context.abrupt("return", intercept(options, options.interceptors, 'Request').then(function () { return options; })); case 7: case "end": return _context.stop(); } }, _callee); })); return _prepareFetchOptions.apply(this, arguments); } //# sourceMappingURL=utils.js.map