1.0.6 • Published 3 years ago
polygon-man v1.0.6
((polygonMan, axios) => {
const polygonApi = 'https://api.polygon.io';
const apiAuthParam = `apiKey=${process.env['POLYGON_API_KEY']}`;
polygonMan.stocks = {
// FETCH COMPANY DETAILS
fetchCompanyDetails: symbol => {
const url = `${polygonApi}/v1/meta/symbols/${symbol}/company?${apiAuthParam}`;
return new Promise((resolve, reject) => {
axios.get(url).then(({ data }) => {
resolve(data);
}).catch(reject);
});
},
// FETCH COMPANY NEWS
fetchCompanyNews: symbol => {
const url = `${polygonApi}/v1/meta/symbols/${symbol}/news?${apiAuthParam}`;
return new Promise((resolve, reject) => {
axios.get(url, { validateStatus: false }).then(({ data }) => {
resolve(data);
}).catch(reject);
});
},
// FETCH UPCOMING HOLIDAYS
fetchUpcomingHolidays: () => {
const url = `${polygonApi}/v1/marketstatus/upcoming?${apiAuthParam}`;
return new Promise((resolve, reject) => {
axios.get(url, { validateStatus: false }).then(({ data }) => {
resolve(data);
}).catch(reject);
});
},
fetchSnapshot: ticker => {
const url = `${polygonApi}/v2/snapshot/locale/us/markets/stocks/tickers/${ticker}?${apiAuthParam}`;
return new Promise((resolve, reject) => {
axios.get(url, { validateStatus: false }).then(({ data }) => {
resolve(data.ticker || false);
}).catch(reject);
});
},
fetchAllSnapshots: () => {
const url = `${polygonApi}/v2/snapshot/locale/us/markets/stocks/tickers?${apiAuthParam}`;
return new Promise((resolve, reject) => {
axios.get(url, { validateStatus: false }).then(({ data }) => {
resolve(data);
}).catch(reject);
});
},
fetchTradesForDate: (ticker, date, limit=50000, timeStart=false, timeLimit=false) => {
ticker = ticker.toUpperCase()
date = new Date(date).toISOString().split('T')[0];
date = date.split('-');
date[2] = `0${parseInt(date[2]) - 1}`.slice(-2);
date = date.join('-');
timeStart = timeStart == false ? '' : `×tamp=${timeStart}`;
timeLimit = timeLimit == false ? '' : `×tampLimit=${timeLimit}`;
const url = `${polygonApi}/v2/ticks/stocks/trades/${ticker}/${date}?reverse=true&limit=${limit}${timeStart}${timeLimit}&${apiAuthParam}`;
return new Promise((resolve, reject) => {
axios.get(url, { validateStatus: false }).then(({ data }) => {
resolve(data);
}).catch(reject);
});
},
fetchBars: (ticker, date, multiplyer=1, timespan='minute') => {
if (date == undefined) {
date = new Date(Date.now()).toISOString().split('T')[0];
} else {
date = new Date(date).toISOString().split('T')[0];
}
const to = new Date().toISOString().split('T')[0];
const url = `${polygonApi}/v2/aggs/ticker/${ticker}/range/${multiplyer}/${timespan}/${date}/${to}?unadjusted=true&sort=asc&${apiAuthParam}`;
return new Promise((resolve, reject) => {
axios.get(url, { validateStatus: false }).then(({ data }) => {
resolve(data);
}).catch(reject);
});
},
fetchLastPrice: ticker => {
const url = `${polygonApi}/v1/last_quote/stocks/${ticker.toUpperCase()}?${apiAuthParam}`;
return new Promise((resolve, reject) => {
axios.get(url, { validateStatus: false }).then(({ data }) => {
resolve(parseFloat(data.last.bidprice.toFixed(2)));
}).catch(reject);
});
}
}
})(module.exports, require('axios'));