Paid currency api support
This commit is contained in:
		
							parent
							
								
									061d341d8b
								
							
						
					
					
						commit
						55c4d4d03d
					
				@ -144,6 +144,7 @@
 | 
			
		||||
  },
 | 
			
		||||
  "FIAT_PRICE": {
 | 
			
		||||
    "ENABLED": true,
 | 
			
		||||
    "PAID": false,
 | 
			
		||||
    "API_KEY": "__MEMPOOL_CURRENCY_API_KEY__"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -151,6 +151,7 @@ describe('Mempool Backend Config', () => {
 | 
			
		||||
 | 
			
		||||
      expect(config.FIAT_PRICE).toStrictEqual({
 | 
			
		||||
        ENABLED: true,
 | 
			
		||||
        PAID: false,
 | 
			
		||||
        API_KEY: '',
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
@ -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': '',
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -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<any> {
 | 
			
		||||
    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<ConversionRates> {
 | 
			
		||||
    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<ConversionRates> {
 | 
			
		||||
    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];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -150,6 +150,7 @@
 | 
			
		||||
  },
 | 
			
		||||
  "FIAT_PRICE": {
 | 
			
		||||
    "ENABLED": __FIAT_PRICE_ENABLED__,
 | 
			
		||||
    "PAID": __FIAT_PRICE_PAID__,
 | 
			
		||||
    "API_KEY": "__FIAT_PRICE_API_KEY__"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user