const { EventEmitter } = require('events'); const axios = require('axios'); const log = require('loglevel'); class BitcoinData extends EventEmitter { constructor() { super(); } get initial() { return { bitpay: null, coinbase: null }; } start() { this.fetch(); setInterval(() => { this.fetch(); }, 30000); } fetch() { Promise.all([ axios.get("https://bitpay.com/api/rates/eur").catch(err => log.error(err.config.url, err.message)), axios.get("https://api.coinbase.com/v2/prices/spot?currency=EUR").catch(err => log.error(err.config.url, err.message)), ]).then(resp => { let bitpay = null, coinbase = null; if (resp[0] != undefined) { bitpay = (Math.round(resp[0].data.rate * 100) / 100) + "€"; } if (resp[1] != undefined) { coinbase = (Math.round(resp[1].data.data.amount * 100) / 100) + "€"; } this.emit("data", { bitpay, coinbase }); }); } } module.exports = new BitcoinData();