mempool/backend/src/api/fiat-conversion.ts

45 lines
1.3 KiB
TypeScript
Raw Normal View History

import logger from '../logger';
import axios from 'axios';
import { IConversionRates } from '../mempool.interfaces';
import config from '../config';
2019-07-21 16:59:47 +02:00
class FiatConversion {
private conversionRates: IConversionRates = {
'USD': 0
2019-07-21 16:59:47 +02:00
};
private ratesChangedCallback: ((rates: IConversionRates) => void) | undefined;
2019-07-21 16:59:47 +02:00
constructor() { }
public setProgressChangedCallback(fn: (rates: IConversionRates) => void) {
this.ratesChangedCallback = fn;
}
2019-07-21 16:59:47 +02:00
public startService() {
logger.info('Starting currency rates service');
setInterval(this.updateCurrency.bind(this), 1000 * config.MEMPOOL.PRICE_FEED_UPDATE_INTERVAL);
2019-07-21 16:59:47 +02:00
this.updateCurrency();
}
public getConversionRates() {
return this.conversionRates;
2019-07-21 16:59:47 +02:00
}
private async updateCurrency(): Promise<void> {
try {
const response = await axios.get('https://price.bisq.wiz.biz/getAllMarketPrices', { timeout: 10000 });
const usd = response.data.data.find((item: any) => item.currencyCode === 'USD');
this.conversionRates = {
'USD': usd.price,
};
if (this.ratesChangedCallback) {
this.ratesChangedCallback(this.conversionRates);
}
} catch (e) {
logger.err('Error updating fiat conversion rates: ' + (e instanceof Error ? e.message : e));
}
2019-07-21 16:59:47 +02:00
}
}
export default new FiatConversion();