Merge pull request #1305 from josepfo/fix/rate-disparity-due-to-currency-pegs

Fix: rate disparity due to currency pegs
This commit is contained in:
Rafael Taranto 2022-07-24 20:57:01 +01:00 committed by GitHub
commit 850f488963

View file

@ -1,3 +1,4 @@
const _ = require('lodash/fp')
const mem = require('mem') const mem = require('mem')
const configManager = require('./new-config-manager') const configManager = require('./new-config-manager')
const logger = require('./logger') const logger = require('./logger')
@ -9,6 +10,8 @@ const bitpay = require('./plugins/ticker/bitpay')
const FETCH_INTERVAL = 60000 const FETCH_INTERVAL = 60000
const PEGGED_FIAT_CURRENCIES = { NAD: 'ZAR' }
function _getRates (settings, fiatCode, cryptoCode) { function _getRates (settings, fiatCode, cryptoCode) {
return Promise.resolve() return Promise.resolve()
.then(() => { .then(() => {
@ -33,9 +36,12 @@ function _getRates (settings, fiatCode, cryptoCode) {
} }
function buildTicker (fiatCode, cryptoCode, tickerName) { function buildTicker (fiatCode, cryptoCode, tickerName) {
if (tickerName === 'bitpay') return bitpay.ticker(fiatCode, cryptoCode) const fiatPeggedEquivalent = _.includes(fiatCode, _.keys(PEGGED_FIAT_CURRENCIES))
if (tickerName === 'mock-ticker') return mockTicker.ticker(fiatCode, cryptoCode) ? PEGGED_FIAT_CURRENCIES[fiatCode]
return ccxt.ticker(fiatCode, cryptoCode, tickerName) : fiatCode
if (tickerName === 'bitpay') return bitpay.ticker(fiatPeggedEquivalent, cryptoCode)
if (tickerName === 'mock-ticker') return mockTicker.ticker(fiatPeggedEquivalent, cryptoCode)
return ccxt.ticker(fiatPeggedEquivalent, cryptoCode, tickerName)
} }
const getRates = mem(_getRates, { const getRates = mem(_getRates, {