UNPKG

polygon.io

Version:

Isomorphic Javascript client for Polygon.io Stocks, Forex, and Crypto APIs

100 lines (94 loc) 2.8 kB
import { formatIV1ForexRaw, IV1ForexRaw } from "./historicForexTicks"; import { get } from "../transport/request"; export interface IForexSnapshotAggRaw { c: number; h: number; l: number; o: number; v: number; } export interface IForexSnapshotAggFormatted { c: number; close: number; h: number; high: number; l: number; low: number; o: number; open: number; v: number; volume: number; } const formatIForexSnapshotAggRaw = ( raw: IForexSnapshotAggRaw ): IForexSnapshotAggFormatted => ({ ...raw, close: raw.c, high: raw.h, low: raw.l, open: raw.o, volume: raw.v }); export interface IForexSnapshotTickerRaw { ticker: string; day: IForexSnapshotAggRaw; lastTrade: IV1ForexRaw; min: IForexSnapshotAggRaw; prevDay: IForexSnapshotAggRaw; todaysChange: number; todaysChangePerc: number; updated: number; } export interface IForexSnapshotTickerFormatted { ticker: string; day: IForexSnapshotAggRaw; lastTrade: IV1ForexRaw; min: IForexSnapshotAggRaw; prevDay: IForexSnapshotAggRaw; todaysChange: number; todaysChangePerc: number; updated: number; } const formatIForexSnapshotRaw = ( raw: IForexSnapshotTickerRaw ): IForexSnapshotTickerFormatted => ({ ticker: raw.ticker, todaysChange: raw.todaysChange, todaysChangePerc: raw.todaysChangePerc, updated: raw.updated, day: formatIForexSnapshotAggRaw(raw.day), lastTrade: formatIV1ForexRaw(raw.lastTrade), min: formatIForexSnapshotAggRaw(raw.min), prevDay: formatIForexSnapshotAggRaw(raw.prevDay) }); export interface IForexSnapshotAllTickersResponseRaw { status: string; tickers: IForexSnapshotTickerRaw[]; } export interface IForexSnapshotAllTickersResponseFormatted { status: string; tickers: IForexSnapshotTickerFormatted[]; } const formatIForexSnapshotAllTickersResponseRaw = ( raw: IForexSnapshotAllTickersResponseRaw ): IForexSnapshotAllTickersResponseFormatted => ({ status: raw.status, tickers: raw.tickers.map(formatIForexSnapshotRaw) }); // CF: https://polygon.io/docs/#!/Forex--Currencies/get_v2_snapshot_locale_global_markets_forex_tickers export const forexSnapshotAllTickers = async ( apiKey: string, apiBase: string ): Promise<IForexSnapshotAllTickersResponseFormatted> => formatIForexSnapshotAllTickersResponseRaw( await get(`/v2/snapshot/locale/global/markets/forex/tickers`, apiKey, apiBase) ); // CF: https://polygon.io/docs/#!/Forex--Currencies/get_v2_snapshot_locale_global_markets_forex_direction export const forexSnapshotGainersLosers = async ( apiKey: string, apiBase: string, direction: string = "gainers" ): Promise<IForexSnapshotAllTickersResponseFormatted> => formatIForexSnapshotAllTickersResponseRaw( await get(`/v2/snapshot/locale/global/markets/forex/${direction}`, apiKey, apiBase) );