UNPKG

@webex/webex-core

Version:

Plugin handling for Cisco Webex

102 lines (97 loc) 4.41 kB
"use strict"; var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct"); 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.sequenceNumbers = exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf")); var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map")); var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property")); var _httpCore = require("@webex/http-core"); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /*! * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file. */ var sequenceNumbers = exports.sequenceNumbers = new _map.default(); /** * @class */ var WebexTrackingIdInterceptor = exports.default = /*#__PURE__*/function (_Interceptor) { (0, _inherits2.default)(WebexTrackingIdInterceptor, _Interceptor); var _super = _createSuper(WebexTrackingIdInterceptor); function WebexTrackingIdInterceptor() { (0, _classCallCheck2.default)(this, WebexTrackingIdInterceptor); return _super.apply(this, arguments); } (0, _createClass2.default)(WebexTrackingIdInterceptor, [{ key: "sequence", get: /** * Sequence number; increments on access * @type {Number} */ function get() { var sq = sequenceNumbers.get(this) || 0; sq += 1; sequenceNumbers.set(this, sq); return sq; } /** * @returns {WebexTrackingIdInterceptor} */ }, { key: "onRequest", value: /** * @see Interceptor#onRequest * @param {Object} options * @returns {Object} */ function onRequest(options) { options.headers = options.headers || {}; // If trackingid is already set, don't overwrite it if ('trackingid' in options.headers) { // If trackingid is set to null, false, or undefined, delete it to // prevent a CORS preflight. if (!options.headers.trackingid) { (0, _deleteProperty.default)(options.headers, 'trackingid'); } return options; } if (this.requiresTrackingId(options)) { options.headers.trackingid = "".concat(this.webex.sessionId, "_").concat(this.sequence); } if (options.headers.trackingid && options.replayCount) { var tid = options.headers.trackingid.split('+'); tid[1] = options.replayCount; options.headers.trackingid = tid.join('+'); } return options; } /** * Determines whether or not include a tracking id * @param {Object} options * @returns {boolean} */ }, { key: "requiresTrackingId", value: function requiresTrackingId(options) { return !options.headers.trackingid; } }], [{ key: "create", value: function create() { return new WebexTrackingIdInterceptor({ webex: this }); } }]); return WebexTrackingIdInterceptor; }(_httpCore.Interceptor); //# sourceMappingURL=webex-tracking-id.js.map