UNPKG

polygon.io

Version:

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

118 lines (111 loc) 2.62 kB
import { get, IPolygonQuery } from "../transport/request"; export interface IAggV2Raw { T?: string; v: number; o: number; c: number; h: number; l: number; t?: number; n?: number; } export interface IAggV2Formatted { T?: string; tickerSymbol?: string; v: number; volume: number; o: number; open: number; c: number; close: number; h: number; high: number; l: number; low: number; t?: number; timestamp?: number; n?: number; numberOfItems?: number; } const formatIAggv2Raw = (raw: IAggV2Raw): IAggV2Formatted => ({ ...raw, tickerSymbol: raw.T, volume: raw.v, open: raw.o, close: raw.c, high: raw.h, low: raw.l, timestamp: raw.t, numberOfItems: raw.n }); export interface IAggResponseRaw { ticker: string; status: string; adjusted: boolean; queryCount?: number; resultsCount?: number; results: IAggV2Raw[]; } export interface IAggResponseFormatted { ticker: string; status: string; adjusted: boolean; queryCount?: number; resultsCount?: number; results: IAggV2Formatted[]; } export const formatIAggResponseRaw = ( raw: IAggResponseRaw ): IAggResponseFormatted => ({ ...raw, results: raw.results.map(formatIAggv2Raw) }); export interface IAggregateQuery extends IPolygonQuery { adjusted?: boolean; } // CF : https://polygon.io/docs/#!/Stocks--Equities/get_v2_aggs_ticker_ticker_prev export const stocksPreviousClose = async ( apiKey: string, apiBase: string, ticker: string, query?: IAggregateQuery ): Promise<IAggResponseFormatted> => formatIAggResponseRaw( await get(`/v2/aggs/ticker/${ticker}/prev`, apiKey, apiBase, query) ); // CF: https://polygon.io/docs/#!/Stocks--Equities/get_v2_aggs_ticker_ticker_range_multiplier_timespan_from_to export const stocksAggregates = async ( apikey: string, apiBase: string, ticker: string, multiplier: number, timespan: string, from: string, to: string, query?: IAggregateQuery ): Promise<IAggResponseFormatted> => formatIAggResponseRaw( await get( `/v2/aggs/ticker/${ticker}/range/${multiplier}/${timespan}/${from}/${to}`, apikey, apiBase, query ) ); // CF: https://polygon.io/docs/#!/Stocks--Equities/get_v2_aggs_grouped_locale_locale_market_market_date export const stocksGroupedDaily = async ( apiKey: string, apiBase: string, locale: string, market: string, date: string, query?: IAggregateQuery ): Promise<IAggResponseFormatted> => formatIAggResponseRaw( await get( `/v2/aggs/grouped/locale/${locale}/market/${market}/${date}`, apiKey, apiBase, query ) );