@webex/http-core
Version:
Core HTTP library for the Cisco Webex
92 lines (87 loc) • 4.52 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.default = void 0;
var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-properties"));
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
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 _httpError = _interopRequireDefault(require("../http-error"));
var _interceptor = _interopRequireDefault(require("../lib/interceptor"));
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 LOCUS_REDIRECT_ERROR = 2000002;
var APPAPI_REDIRECT_ERROR = 404100;
/**
* @class
*/
var HttpStatusInterceptor = exports.default = /*#__PURE__*/function (_Interceptor) {
(0, _inherits2.default)(HttpStatusInterceptor, _Interceptor);
var _super = _createSuper(HttpStatusInterceptor);
/**
* @param {Object} webex
* @param {Object} options
* @returns {HttpStatusInterceptor}
*/
function HttpStatusInterceptor(webex, options) {
var _this;
(0, _classCallCheck2.default)(this, HttpStatusInterceptor);
_this = _super.call(this, webex);
var ErrorConstructor = options && (options.error || options.ErrorConstructor) || _httpError.default;
(0, _defineProperties.default)((0, _assertThisInitialized2.default)(_this), {
ErrorConstructor: {
value: ErrorConstructor
}
});
return _this;
}
/**
* @param {Object} options
* @returns {HttpStatusInterceptor}
*/
(0, _createClass2.default)(HttpStatusInterceptor, [{
key: "onResponse",
value:
/**
* @param {Object} options
* @param {HttpResponse} response
* @returns {Promise}
*/
function onResponse(options, response) {
if (response.statusCode) {
if (response.statusCode < 400) {
return _promise.default.resolve(response);
}
// to handle locus redirects
if (response.statusCode === 404 && response.body && response.body.errorCode === LOCUS_REDIRECT_ERROR) {
return _promise.default.resolve(response);
}
// to handle appapi redirects
if (response.statusCode === 404 && response.body && response.body.code === APPAPI_REDIRECT_ERROR) {
return _promise.default.resolve(response);
}
}
// Note: the extra parenthesis below are required to make sure `new` is
// applied to the correct method (i.e., the result of `select()`, not
// `select()` itself).
return _promise.default.reject(new (this.ErrorConstructor.select(response.statusCode))(response));
}
}], [{
key: "create",
value: function create(options) {
return new HttpStatusInterceptor(this, options);
}
}]);
return HttpStatusInterceptor;
}(_interceptor.default);
//# sourceMappingURL=http-status.js.map
;