50 lines
1.7 KiB
JavaScript
50 lines
1.7 KiB
JavaScript
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(); |