growwapi
Version:
NodeJS SDK for Groww trading APIs
49 lines (48 loc) • 1.84 kB
JavaScript
import { LiveFeedSubscriptionType, Segment } from '../../types';
export function subscriptionSegmentParser(segment) {
switch (segment) {
case Segment.CASH:
return 'eq';
case Segment.FNO:
return 'fo';
default:
return 'eq';
}
}
export function subscriptionTypeParser(type) {
switch (type) {
case LiveFeedSubscriptionType.Price:
return 'price';
case LiveFeedSubscriptionType.Index:
return 'indices';
case LiveFeedSubscriptionType.MarketDepth:
return 'book';
default:
throw new Error(`Unknown subscription type: ${type}`);
}
}
export function liveUpdatesParser(type, subscriptionId) {
switch (type) {
case LiveFeedSubscriptionType.FnoOrderUpdates:
return `stocks_fo/order/updates.apex.${subscriptionId}`;
case LiveFeedSubscriptionType.FnoPositionUpdates:
return `stocks_fo/position/updates.apex.${subscriptionId}`;
case LiveFeedSubscriptionType.EquityOrderUpdates:
return `stocks/order/updates.apex.${subscriptionId}`;
default:
throw new Error(`Unknown subscription type: ${type}`);
}
}
export function liveIndexParser(type, instruction) {
const exchange = instruction.exchange?.toLowerCase();
const token = instruction.exchangeToken;
const typeString = subscriptionTypeParser(type);
return `/ld/${typeString}/${exchange}/price.${token}`;
}
export function liveMarketParser(type, instruction) {
const segment = subscriptionSegmentParser(instruction.segment);
const exchange = instruction.exchange?.toLowerCase();
const token = instruction.exchangeToken;
const typeString = subscriptionTypeParser(type);
return `/ld/${segment}/${exchange}/${typeString}.${token}`;
}