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.

54 lines (53 loc) 2.32 kB
import { RequestType } from "../../core/request-types"; import { SubscriptionRequestImpl } from "../../core/subscription-request"; import { getRequestConfig } from "../../request-configs"; import { SubscriptionStatus } from "../../core/types/subscription"; import { getMessageDetails } from "../../core/helpers"; import { isMessageOfType } from "../../core/helpers"; import { MessageTypes } from "../../core/message-types"; import { validateSubscription } from "./helpers"; function processMarketDataEventsMessage(eventMessage) { var correlationIds = eventMessage.correlationIds; if (!Array.isArray(correlationIds) || correlationIds.length == 0) { return new Map(); } var data = getMessageDetails(eventMessage, MessageTypes.MarketDataEvents); var dataToSubscriptionIdMap = new Map(); correlationIds.forEach(function (id) { dataToSubscriptionIdMap.set(id, data); }); return dataToSubscriptionIdMap; } function subscriptionDataHandler(eventMessage) { if (!isMessageOfType(eventMessage, MessageTypes.MarketDataEvents)) { return new Map(); } return processMarketDataEventsMessage(eventMessage); } function toSubscriptionInner(_a) { var fields = _a.fields, security = _a.security, delayed = _a.delayed, intervalInSeconds = _a.intervalInSeconds, subscriptionId = _a.subscriptionId; var options; if (intervalInSeconds) { options = "interval=" + intervalInSeconds; } if (delayed) { options = options ? options + "&delayed" : "delayed"; } return { subscriptionId: subscriptionId, fields: fields, security: security, options: options, status: SubscriptionStatus.SubscriptionCreated, }; } export default (function (sessionManager) { return function (subscriptions) { for (var _i = 0, subscriptions_1 = subscriptions; _i < subscriptions_1.length; _i++) { var subscription = subscriptions_1[_i]; validateSubscription(subscription); } var subscriptionsInner = subscriptions.map(toSubscriptionInner); return new SubscriptionRequestImpl(sessionManager, getRequestConfig(RequestType.MarketSubscription), subscriptionsInner, subscriptionDataHandler).api; }; });