@webex/webex-core
Version:
Plugin handling for Cisco Webex
102 lines (97 loc) • 4.41 kB
JavaScript
;
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