UNPKG

970 BPlain TextView Raw
1import fetch from 'node-fetch'
2import ECBBackend from './ecb'
3import { create as createLogger } from '../common/log'
4const log = createLogger('ecb-plus-xrp')
5
6// Bitstamp/EUR
7const CHARTS_API = 'https://data.ripple.com/v2/exchange_rates/EUR+rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq/XRP'
8
9export default class ECBAndXRPBackend extends ECBBackend {
10 async connect () {
11 await super.connect()
12 // XRP rate may have been loaded as part of the mock data
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}