UNPKG

@glue42/bbg-market-data

Version:

A high-level API that wraps existing Glue42 Bloomberg Bridge Market Data interop methods. The API is based on the jBloomberg open source wrapper.

96 lines (95 loc) 4.6 kB
import { __assign, __awaiter, __extends, __generator, __rest } from "tslib"; import { BaseRequest } from "../../core/base-request"; import { isEventOfType } from "../../core/helpers"; import { EventTypes } from "../../core/event-types"; import { requestFailureHandler, serviceOpenedFailureHandler, sessionTerminatedHandler, sessionStartUpFailureHandler } from "../../core/message-handlers"; var GenericRequestImpl = (function (_super) { __extends(GenericRequestImpl, _super); function GenericRequestImpl(sessionManager, config, operationArgs) { var _this = _super.call(this, sessionManager, config, operationArgs) || this; _this.sessionManager = sessionManager; _this.config = config; _this.operationArgs = operationArgs; return _this; } Object.defineProperty(GenericRequestImpl.prototype, "api", { get: function () { var that = this; return { get id() { return that.requestId; }, get settings() { return { operation: that.config.operation, service: that.config.service, operationArgs: that.operationArgs, }; }, get status() { return that._status; }, open: that.open.bind(that), close: that.closeRequest.bind(that), onRequestStatusChanged: that.onRequestStatusChanged.bind(that), }; }, enumerable: false, configurable: true }); GenericRequestImpl.prototype.open = function (options) { return __awaiter(this, void 0, void 0, function () { var _a, messageProcessor, otherOptions; return __generator(this, function (_b) { switch (_b.label) { case 0: _a = options !== null && options !== void 0 ? options : {}, messageProcessor = _a.messageProcessor, otherOptions = __rest(_a, ["messageProcessor"]); if (typeof messageProcessor !== "function") { throw new Error("messageProcessor must be a function"); } this.userMessageProcessor = messageProcessor; return [4, _super.prototype.openRequest.call(this, __assign(__assign({}, otherOptions), { messageProcessor: this.messageProcessor.bind(this) }))]; case 1: _b.sent(); return [2]; } }); }); }; GenericRequestImpl.prototype.messageProcessor = function (eventMessage) { return __awaiter(this, void 0, void 0, function () { var error, processorResult, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); error = [ sessionStartUpFailureHandler(eventMessage), sessionTerminatedHandler(eventMessage), serviceOpenedFailureHandler(eventMessage), requestFailureHandler(eventMessage), ].find(function (_a) { var match = _a.match; return match; }); return [4, this.userMessageProcessor(eventMessage.eventType, eventMessage.message)]; case 1: processorResult = _a.sent(); if (error) { return [2, { action: "fail", error: error.data }]; } if (isEventOfType(eventMessage, EventTypes.Response)) { return [2, { action: 'complete' }]; } return [2, processorResult.continue ? { action: 'continue' } : { action: 'close' }]; case 2: error_1 = _a.sent(); return [2, { action: 'fail', error: error_1 instanceof Error ? error_1 : new Error(String(error_1)) }]; case 3: return [2]; } }); }); }; return GenericRequestImpl; }(BaseRequest)); export { GenericRequestImpl };