1 | import fetch from 'node-fetch'
|
2 | import ECBBackend from './ecb'
|
3 | import { create as createLogger } from '../common/log'
|
4 | const log = createLogger('ecb-plus-xrp')
|
5 |
|
6 |
|
7 | const CHARTS_API = 'https://data.ripple.com/v2/exchange_rates/EUR+rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq/XRP'
|
8 |
|
9 | export default class ECBAndXRPBackend extends ECBBackend {
|
10 | async connect () {
|
11 | await super.connect()
|
12 |
|
13 | if (!this.rates.XRP) {
|
14 | this.rates.XRP = await this._getXRPRate()
|
15 | }
|
16 | this.currencies.push('XRP')
|
17 | this.currencies.sort()
|
18 | }
|
19 |
|
20 | async _getXRPRate () {
|
21 | const rateRes = await fetch(CHARTS_API)
|
22 | if (rateRes.status !== 200) {
|
23 | throw new Error('unexpected HTTP status code from Ripple Data API. status=' + rateRes.status)
|
24 | }
|
25 | const body = await rateRes.json()
|
26 | const rate = Number(body.rate).toFixed(5)
|
27 | log.trace('loaded EUR/XRP rate. rate=%s', rate)
|
28 | return Number(rate)
|
29 | }
|
30 | }
|