@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.
114 lines • 5.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFailureReason = exports.toTerminalSubscription = exports.setSubscriptionCreatedStatus = exports.setSubscriptionIds = exports.createErrorMessageHandler = exports.createResponseDataHandler = exports.createResponseErrorHandler = exports.getMessageDetails = exports.isEventOfType = exports.isMessageOfType = exports.isActive = exports.isDone = exports.isPending = exports.isNew = void 0;
const tslib_1 = require("tslib");
const request_status_1 = require("../request-status");
const types_1 = require("./types");
const event_types_1 = require("./event-types");
const subscription_1 = require("./types/subscription");
const correlationId_1 = tslib_1.__importDefault(require("./../correlationId"));
exports.isNew = (status) => status === request_status_1.RequestStatus.Created;
exports.isPending = (status) => status === request_status_1.RequestStatus.Opened || status === request_status_1.RequestStatus.Active;
exports.isDone = (status) => status === request_status_1.RequestStatus.Failed || status === request_status_1.RequestStatus.Completed || status === request_status_1.RequestStatus.Closed;
exports.isActive = (status) => status === request_status_1.RequestStatus.Active;
/**
* Checks whether a Bloomberg message is of a particular message type.
*/
function isMessageOfType(eventMessage, type) {
return type in eventMessage.message;
}
exports.isMessageOfType = isMessageOfType;
/**
* Checks whether a Bloomberg message is of a particular event type.
*/
function isEventOfType(eventMessage, type) {
return eventMessage.eventType === type;
}
exports.isEventOfType = isEventOfType;
/**
* Extracts the actual message details.
*/
function getMessageDetails(eventMessage, type) {
return eventMessage.message[type];
}
exports.getMessageDetails = getMessageDetails;
function createResponseErrorHandler(messageType, getError, test) {
return (eventMessage) => {
if (!isMessageOfType(eventMessage, messageType)) {
return {
match: false,
};
}
const messageDetails = getMessageDetails(eventMessage, messageType);
if (typeof test === "function" && !test(messageDetails)) {
return { match: false };
}
const errorDetails = getError(messageDetails);
return {
match: true,
data: new types_1.BloombergError(event_types_1.EventTypes.Response, messageType, errorDetails),
};
};
}
exports.createResponseErrorHandler = createResponseErrorHandler;
function createResponseDataHandler(messageType, getData, test) {
return (eventMessage) => {
if (!isMessageOfType(eventMessage, messageType)) {
return {
match: false,
};
}
const messageDetails = getMessageDetails(eventMessage, messageType);
if (typeof test === "function" && !test(messageDetails)) {
return { match: false };
}
const data = getData(messageDetails);
return {
match: true,
data: data,
};
};
}
exports.createResponseDataHandler = createResponseDataHandler;
function createErrorMessageHandler(eventType, messageType) {
return (eventMessage) => {
if (isEventOfType(eventMessage, eventType) && isMessageOfType(eventMessage, messageType)) {
const messageDetails = getMessageDetails(eventMessage, messageType);
return {
match: true,
data: new types_1.BloombergError(eventType, messageType, messageDetails),
};
}
return {
match: false,
};
};
}
exports.createErrorMessageHandler = createErrorMessageHandler;
function setSubscriptionIds(subscription) {
return Object.assign(Object.assign({}, subscription), { internalId: new correlationId_1.default().value, subscriptionId: subscription.subscriptionId instanceof correlationId_1.default
? subscription.subscriptionId
: new correlationId_1.default(subscription.security) });
}
exports.setSubscriptionIds = setSubscriptionIds;
function setSubscriptionCreatedStatus(subscription) {
return Object.assign(Object.assign({}, subscription), { status: subscription_1.SubscriptionStatus.SubscriptionCreated });
}
exports.setSubscriptionCreatedStatus = setSubscriptionCreatedStatus;
function toTerminalSubscription({ internalId, security, fields, options, }) {
return {
subscriptionId: internalId,
security,
fields: fields.join(","),
options,
};
}
exports.toTerminalSubscription = toTerminalSubscription;
function getFailureReason(id, error) {
const errorMessage = error instanceof types_1.BloombergError
? `Received: event="${error.eventType}" / event message="${error.eventMessage}".`
: error.message;
return `Request with an id "${id}" failed. ${errorMessage}`;
}
exports.getFailureReason = getFailureReason;
//# sourceMappingURL=helpers.js.map