@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
JavaScript
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;
};
});