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.

95 lines (94 loc) 3.89 kB
import { __assign } from "tslib"; import { RequestStatus } from "../request-status"; import { BloombergError } from "./types"; import { EventTypes } from "./event-types"; import { SubscriptionStatus } from "./types/subscription"; import CorrelationId from "./../correlationId"; export var isNew = function (status) { return status === RequestStatus.Created; }; export var isPending = function (status) { return status === RequestStatus.Opened || status === RequestStatus.Active; }; export var isDone = function (status) { return status === RequestStatus.Failed || status === RequestStatus.Completed || status === RequestStatus.Closed; }; export var isActive = function (status) { return status === RequestStatus.Active; }; export function isMessageOfType(eventMessage, type) { return type in eventMessage.message; } export function isEventOfType(eventMessage, type) { return eventMessage.eventType === type; } export function getMessageDetails(eventMessage, type) { return eventMessage.message[type]; } export function createResponseErrorHandler(messageType, getError, test) { return function (eventMessage) { if (!isMessageOfType(eventMessage, messageType)) { return { match: false, }; } var messageDetails = getMessageDetails(eventMessage, messageType); if (typeof test === "function" && !test(messageDetails)) { return { match: false }; } var errorDetails = getError(messageDetails); return { match: true, data: new BloombergError(EventTypes.Response, messageType, errorDetails), }; }; } export function createResponseDataHandler(messageType, getData, test) { return function (eventMessage) { if (!isMessageOfType(eventMessage, messageType)) { return { match: false, }; } var messageDetails = getMessageDetails(eventMessage, messageType); if (typeof test === "function" && !test(messageDetails)) { return { match: false }; } var data = getData(messageDetails); return { match: true, data: data, }; }; } export function createErrorMessageHandler(eventType, messageType) { return function (eventMessage) { if (isEventOfType(eventMessage, eventType) && isMessageOfType(eventMessage, messageType)) { var messageDetails = getMessageDetails(eventMessage, messageType); return { match: true, data: new BloombergError(eventType, messageType, messageDetails), }; } return { match: false, }; }; } export function setSubscriptionIds(subscription) { return __assign(__assign({}, subscription), { internalId: new CorrelationId().value, subscriptionId: subscription.subscriptionId instanceof CorrelationId ? subscription.subscriptionId : new CorrelationId(subscription.security) }); } export function setSubscriptionCreatedStatus(subscription) { return __assign(__assign({}, subscription), { status: SubscriptionStatus.SubscriptionCreated }); } export function toTerminalSubscription(_a) { var internalId = _a.internalId, security = _a.security, fields = _a.fields, options = _a.options; return { subscriptionId: internalId, security: security, fields: fields.join(","), options: options, }; } export function getFailureReason(id, error) { var errorMessage = error instanceof BloombergError ? "Received: event=\"" + error.eventType + "\" / event message=\"" + error.eventMessage + "\"." : error.message; return "Request with an id \"" + id + "\" failed. " + errorMessage; }