1.0.6 • Published 3 years ago

polygon-man v1.0.6

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago
((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 ? '' : `&timestamp=${timeStart}`;
      timeLimit = timeLimit == false ? '' : `&timestampLimit=${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'));
1.0.6

3 years ago

1.0.4

3 years ago

1.0.2

3 years ago

1.0.0

3 years ago