@webex/http-core
Version:
Core HTTP library for the Cisco Webex
123 lines (115 loc) • 3.76 kB
JavaScript
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 _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/define-property"));
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
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 _lodash = require("lodash");
/*!
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
*/
/**
* @class
*/
var Interceptor = exports.default = /*#__PURE__*/function () {
/**
* @constructor
* @param {Object} attrs
* @returns {UrlInterceptor}
*/
function Interceptor(attrs) {
var _this = this;
(0, _classCallCheck2.default)(this, Interceptor);
if (attrs) {
(0, _keys.default)(attrs).forEach(function (key) {
var value = attrs[key];
(0, _defineProperty.default)(_this, key, {
enumerable: true,
value: value
});
});
}
}
/**
* Logs the options of a request. This should be utilized
* during the intercepting process, but can be used at any
* time otherwise.
* @param {object} options
* @returns {void}
*/
(0, _createClass2.default)(Interceptor, [{
key: "logOptions",
value: function logOptions() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var logger = (0, _lodash.get)(this, 'webex.logger', console);
if (!process.env.ENABLE_VERBOSE_NETWORK_LOGGING || !logger) {
return;
}
// prepend a header for the interceptor
logger.info('/***** Interceptor ****************************************************\\');
logger.info("".concat(this.constructor.name, " - ").concat((0, _stringify.default)(options, null, 2)));
}
/**
* @abstract
* @returns {Interceptor}
*/
}, {
key: "onRequest",
value:
/**
* Transform request options before sending them
* @param {Object} options
* @returns {Promise<Object>}
*/
function onRequest(options) {
return _promise.default.resolve(options);
}
/**
* Handle request failures
* @param {Object} options
* @param {Error} reason
* @returns {RejectedPromise<Error>}
*/
}, {
key: "onRequestError",
value: function onRequestError(options, reason) {
return _promise.default.reject(reason);
}
/**
* Transform response before returning it
* @param {Object} options
* @param {HttpResponse} response
* @returns {Promise<HttpResponse>}
*/
}, {
key: "onResponse",
value: function onResponse(options, response) {
return _promise.default.resolve(response);
}
/**
* Handle response errors
* @param {Object} options
* @param {WebexHttpError} reason
* @returns {Promise<WebexHttpError>}
*/
}, {
key: "onResponseError",
value: function onResponseError(options, reason) {
return _promise.default.reject(reason);
}
}], [{
key: "create",
value: function create() {
throw new Error('`Interceptor.create()` must be defined');
}
}]);
return Interceptor;
}();
//# sourceMappingURL=interceptor.js.map
;