const { EventEmitter } = require('events'); const axios = require('axios'); const log = require('loglevel'); class XMRData extends EventEmitter { constructor() { super(); } get initial() { return { shapeshift: null, xmrto: null, shapeshift_xmr: 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://shapeshift.io/marketinfo/btc_xmr").catch(err => log.error(err.config.url, err.message)), axios.get("https://api.morphtoken.com/rates").catch(err => log.error(err.config.url, err.message)), axios.get("https://xmr.to/api/v2/xmr2btc/order_parameter_query/").catch(err => log.error(err.config.url, err.message)), ]).then(resp => { let bitpay = null, morphtoken = null, xmrto = null, morphtoken_xmr = null; if (resp[0] != undefined) { bitpay = resp[0].data.rate; if (resp[1] != undefined) { // console.log(resp[1]); morphtoken_xmr = (Math.round(resp[1].data.data.BTC.XMR * 100) / 100) + "XMR"; morphtoken = (Math.round((bitpay / resp[1].data.data.BTC.XMR) * 100) / 100) + "€"; } if (resp[2] != undefined) { xmrto = (Math.round((bitpay * resp[2].data.price) * 100) / 100) + "€"; } } this.emit("data", { morphtoken, xmrto, morphtoken_xmr }); }); } } module.exports = new XMRData();