diff --git a/backend/mempool-config.sample.json b/backend/mempool-config.sample.json index 87f9d5f34..b29e8cb7a 100644 --- a/backend/mempool-config.sample.json +++ b/backend/mempool-config.sample.json @@ -152,6 +152,7 @@ }, "FIAT_PRICE": { "ENABLED": true, + "PAID": false, "API_KEY": "your-api-key-from-freecurrencyapi.com" } } diff --git a/backend/src/__fixtures__/mempool-config.template.json b/backend/src/__fixtures__/mempool-config.template.json index e2719c495..f81e889ca 100644 --- a/backend/src/__fixtures__/mempool-config.template.json +++ b/backend/src/__fixtures__/mempool-config.template.json @@ -144,6 +144,7 @@ }, "FIAT_PRICE": { "ENABLED": true, + "PAID": false, "API_KEY": "__MEMPOOL_CURRENCY_API_KEY__" } } diff --git a/backend/src/__tests__/config.test.ts b/backend/src/__tests__/config.test.ts index 44a183300..18f72f88c 100644 --- a/backend/src/__tests__/config.test.ts +++ b/backend/src/__tests__/config.test.ts @@ -151,6 +151,7 @@ describe('Mempool Backend Config', () => { expect(config.FIAT_PRICE).toStrictEqual({ ENABLED: true, + PAID: false, API_KEY: '', }); }); diff --git a/backend/src/config.ts b/backend/src/config.ts index ae56e4b91..2c479c098 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -154,6 +154,7 @@ interface IConfig { }, FIAT_PRICE: { ENABLED: boolean; + PAID: boolean; API_KEY: string; }, } @@ -310,6 +311,7 @@ const defaults: IConfig = { }, 'FIAT_PRICE': { 'ENABLED': true, + 'PAID': false, 'API_KEY': '', }, }; diff --git a/backend/src/tasks/price-feeds/free-currency-api.ts b/backend/src/tasks/price-feeds/free-currency-api.ts index 8d6175b95..be8e91ea8 100644 --- a/backend/src/tasks/price-feeds/free-currency-api.ts +++ b/backend/src/tasks/price-feeds/free-currency-api.ts @@ -39,13 +39,17 @@ const emptyRates = { class FreeCurrencyApi implements ConversionFeed { private API_KEY: string; + private apiUrlPrefix: string = `https://api.freecurrencyapi.com/v1/`; - constructor(apiKey: string) { + constructor(apiKey: string, paid = false) { this.API_KEY = apiKey; + if (paid) { + this.apiUrlPrefix = `https://api.currencyapi.com/v3/`; + } } public async $getQuota(): Promise { - const response = await query(`https://api.freecurrencyapi.com/v1/status?apikey=${this.API_KEY}`); + const response = await query(`${this.apiUrlPrefix}status?apikey=${this.API_KEY}`); if (response && response['quotas']) { return response['quotas']; } @@ -53,7 +57,7 @@ class FreeCurrencyApi implements ConversionFeed { } public async $fetchLatestConversionRates(): Promise { - const response = await query(`https://api.freecurrencyapi.com/v1/latest?apikey=${this.API_KEY}`); + const response = await query(`${this.apiUrlPrefix}latest?apikey=${this.API_KEY}`); if (response && response['data']) { return response['data']; } @@ -61,7 +65,7 @@ class FreeCurrencyApi implements ConversionFeed { } public async $fetchConversionRates(date: string): Promise { - const response = await query(`https://api.freecurrencyapi.com/v1/historical?date=${date}&apikey=${this.API_KEY}`); + const response = await query(`${this.apiUrlPrefix}historical?date=${date}&apikey=${this.API_KEY}`); if (response && response['data'] && response['data'][date]) { return response['data'][date]; } diff --git a/backend/src/tasks/price-updater.ts b/backend/src/tasks/price-updater.ts index 7ed4cb178..7f975766f 100644 --- a/backend/src/tasks/price-updater.ts +++ b/backend/src/tasks/price-updater.ts @@ -71,7 +71,7 @@ class PriceUpdater { this.feeds.push(new BitfinexApi()); this.feeds.push(new GeminiApi()); - this.currencyConversionFeed = new FreeCurrencyApi(config.FIAT_PRICE.API_KEY); + this.currencyConversionFeed = new FreeCurrencyApi(config.FIAT_PRICE.API_KEY, config.FIAT_PRICE.PAID); this.setCyclePosition(); } diff --git a/docker/backend/mempool-config.json b/docker/backend/mempool-config.json index 7b662bed4..24ecf60c7 100644 --- a/docker/backend/mempool-config.json +++ b/docker/backend/mempool-config.json @@ -150,6 +150,7 @@ }, "FIAT_PRICE": { "ENABLED": __FIAT_PRICE_ENABLED__, + "PAID": __FIAT_PRICE_PAID__, "API_KEY": "__FIAT_PRICE_API_KEY__" } } diff --git a/docker/backend/start.sh b/docker/backend/start.sh index 773ebc150..4108e0534 100755 --- a/docker/backend/start.sh +++ b/docker/backend/start.sh @@ -151,6 +151,7 @@ __REDIS_BATCH_QUERY_BASE_SIZE__=${REDIS_BATCH_QUERY_BASE_SIZE:=5000} # FIAT_PRICE __FIAT_PRICE_ENABLED__=${FIAT_PRICE_ENABLED:=true} +__FIAT_PRICE_PAID__=${FIAT_PRICE_PAID:=false} __FIAT_PRICE_API_KEY__=${FIAT_PRICE_API_KEY:=""} mkdir -p "${__MEMPOOL_CACHE_DIR__}" @@ -296,6 +297,7 @@ sed -i "s!__REDIS_BATCH_QUERY_BASE_SIZE__!${__REDIS_BATCH_QUERY_BASE_SIZE__}!g" # FIAT_PRICE sed -i "s!__FIAT_PRICE_ENABLED__!${__FIAT_PRICE_ENABLED__}!g" mempool-config.json +sed -i "s!__FIAT_PRICE_PAID__!${__FIAT_PRICE_PAID__}!g" mempool-config.json sed -i "s!__FIAT_PRICE_API_KEY__!${__FIAT_PRICE_API_KEY__}!g" mempool-config.json node /backend/package/index.js