1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const node_fetch_1 = require("node-fetch");
|
4 | const ecb_1 = require("./ecb");
|
5 | const log_1 = require("../common/log");
|
6 | const log = log_1.create('ecb-plus-xrp');
|
7 | const CHARTS_API = 'https://data.ripple.com/v2/exchange_rates/EUR+rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq/XRP';
|
8 | class ECBAndXRPBackend extends ecb_1.default {
|
9 | async connect() {
|
10 | await super.connect();
|
11 | if (!this.rates.XRP) {
|
12 | this.rates.XRP = await this._getXRPRate();
|
13 | }
|
14 | this.currencies.push('XRP');
|
15 | this.currencies.sort();
|
16 | }
|
17 | async _getXRPRate() {
|
18 | const rateRes = await node_fetch_1.default(CHARTS_API);
|
19 | if (rateRes.status !== 200) {
|
20 | throw new Error('unexpected HTTP status code from Ripple Data API. status=' + rateRes.status);
|
21 | }
|
22 | const body = await rateRes.json();
|
23 | const rate = Number(body.rate).toFixed(5);
|
24 | log.trace('loaded EUR/XRP rate. rate=%s', rate);
|
25 | return Number(rate);
|
26 | }
|
27 | }
|
28 | exports.default = ECBAndXRPBackend;
|
29 |
|
\ | No newline at end of file |