@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.
52 lines • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const request_types_1 = require("../../core/request-types");
const subscription_request_1 = require("../../core/subscription-request");
const request_configs_1 = require("../../request-configs");
const subscription_1 = require("../../core/types/subscription");
const helpers_1 = require("../../core/helpers");
const helpers_2 = require("../../core/helpers");
const message_types_1 = require("../../core/message-types");
const helpers_3 = require("./helpers");
function processMarketDataEventsMessage(eventMessage) {
const { correlationIds } = eventMessage;
if (!Array.isArray(correlationIds) || correlationIds.length == 0) {
return new Map();
}
const data = helpers_1.getMessageDetails(eventMessage, message_types_1.MessageTypes.MarketDataEvents);
const dataToSubscriptionIdMap = new Map();
correlationIds.forEach((id) => {
dataToSubscriptionIdMap.set(id, data);
});
return dataToSubscriptionIdMap;
}
function subscriptionDataHandler(eventMessage) {
if (!helpers_2.isMessageOfType(eventMessage, message_types_1.MessageTypes.MarketDataEvents)) {
return new Map();
}
return processMarketDataEventsMessage(eventMessage);
}
function toSubscriptionInner({ fields, security, delayed, intervalInSeconds, subscriptionId, }) {
let options;
if (intervalInSeconds) {
options = `interval=${intervalInSeconds}`;
}
if (delayed) {
options = options ? `${options}&delayed` : "delayed";
}
return {
subscriptionId,
fields,
security,
options,
status: subscription_1.SubscriptionStatus.SubscriptionCreated,
};
}
exports.default = (sessionManager) => (subscriptions) => {
for (const subscription of subscriptions) {
helpers_3.validateSubscription(subscription);
}
const subscriptionsInner = subscriptions.map(toSubscriptionInner);
return new subscription_request_1.SubscriptionRequestImpl(sessionManager, request_configs_1.getRequestConfig(request_types_1.RequestType.MarketSubscription), subscriptionsInner, subscriptionDataHandler).api;
};
//# sourceMappingURL=index.js.map