aboutsummaryrefslogtreecommitdiffstats
path: root/rates.js
blob: 35ba349ad1cb98067d4d61ad0e40cd421dfb4ec3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
const axios = require("axios");
const config = require("./config");
const l = require("pino")();

module.exports = (app, socket) => {
  let binance = require("./binance")(app, socket);

  let fetchRates;
  (fetchRates = async () => {
    let rates = require("./devrates");

    if (process.env.NODE_ENV === "production") {
      try {
        let res = await axios.get(
          `http://data.fixer.io/api/latest?access_key=${config.fixer}`
        );

        let fx = res.data.rates;

        fx &&
          Object.keys(fx).map(symbol => {
            rates[symbol] = fx[symbol] / fx["USD"];
          });

        res = await axios.get(
          "https://api.bitcoinvenezuela.com/?html=no&currency=VEF"
        );

        rates.VEF = res.data["exchange_rates"].VEF_USD;
        rates.VES = res.data["exchange_rates"].VEF_USD / 100000;
        rates.KVES = res.data["exchange_rates"].VEF_USD / 100000000;
      } catch (e) {
        l.error(e);
      }
    }

    app.set("fxrates", rates);

    setTimeout(fetchRates, 7200000);
  })();

  setInterval(() => {
    socket.emit("rates", app.get("rates"));
  }, 1000);

  setInterval(() => {
    binance.terminate();
    binance = require("./binance")(app, socket);
  }, 360000);
};