2024-03-07 10:48:32 +01:00
|
|
|
import { query } from '../../utils/axios-query';
|
|
|
|
import { ConversionFeed, ConversionRates } from '../price-updater';
|
|
|
|
|
|
|
|
const emptyRates = {
|
|
|
|
AUD: -1,
|
|
|
|
BGN: -1,
|
|
|
|
BRL: -1,
|
|
|
|
CAD: -1,
|
|
|
|
CHF: -1,
|
|
|
|
CNY: -1,
|
|
|
|
CZK: -1,
|
|
|
|
DKK: -1,
|
|
|
|
EUR: -1,
|
|
|
|
GBP: -1,
|
|
|
|
HKD: -1,
|
|
|
|
HRK: -1,
|
|
|
|
HUF: -1,
|
|
|
|
IDR: -1,
|
|
|
|
ILS: -1,
|
|
|
|
INR: -1,
|
|
|
|
ISK: -1,
|
|
|
|
JPY: -1,
|
|
|
|
KRW: -1,
|
|
|
|
MXN: -1,
|
|
|
|
MYR: -1,
|
|
|
|
NOK: -1,
|
|
|
|
NZD: -1,
|
|
|
|
PHP: -1,
|
|
|
|
PLN: -1,
|
|
|
|
RON: -1,
|
|
|
|
RUB: -1,
|
|
|
|
SEK: -1,
|
|
|
|
SGD: -1,
|
|
|
|
THB: -1,
|
|
|
|
TRY: -1,
|
2024-03-11 15:27:43 +01:00
|
|
|
USD: -1,
|
2024-03-07 10:48:32 +01:00
|
|
|
ZAR: -1,
|
|
|
|
};
|
|
|
|
|
|
|
|
class FreeCurrencyApi implements ConversionFeed {
|
|
|
|
private API_KEY: string;
|
2024-04-12 14:06:12 +09:00
|
|
|
private apiUrlPrefix: string = `https://api.freecurrencyapi.com/v1/`;
|
2024-03-07 10:48:32 +01:00
|
|
|
|
2024-04-12 14:06:12 +09:00
|
|
|
constructor(apiKey: string, paid = false) {
|
2024-03-07 10:48:32 +01:00
|
|
|
this.API_KEY = apiKey;
|
2024-04-12 14:06:12 +09:00
|
|
|
if (paid) {
|
|
|
|
this.apiUrlPrefix = `https://api.currencyapi.com/v3/`;
|
|
|
|
}
|
2024-03-07 10:48:32 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public async $getQuota(): Promise<any> {
|
2024-04-12 14:06:12 +09:00
|
|
|
const response = await query(`${this.apiUrlPrefix}status?apikey=${this.API_KEY}`);
|
2024-03-07 10:48:32 +01:00
|
|
|
if (response && response['quotas']) {
|
|
|
|
return response['quotas'];
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public async $fetchLatestConversionRates(): Promise<ConversionRates> {
|
2024-04-12 14:06:12 +09:00
|
|
|
const response = await query(`${this.apiUrlPrefix}latest?apikey=${this.API_KEY}`);
|
2024-03-07 10:48:32 +01:00
|
|
|
if (response && response['data']) {
|
|
|
|
return response['data'];
|
|
|
|
}
|
|
|
|
return emptyRates;
|
|
|
|
}
|
|
|
|
|
|
|
|
public async $fetchConversionRates(date: string): Promise<ConversionRates> {
|
2024-04-12 14:06:12 +09:00
|
|
|
const response = await query(`${this.apiUrlPrefix}historical?date=${date}&apikey=${this.API_KEY}`);
|
2024-03-07 10:48:32 +01:00
|
|
|
if (response && response['data'] && response['data'][date]) {
|
|
|
|
return response['data'][date];
|
|
|
|
}
|
|
|
|
return emptyRates;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
export default FreeCurrencyApi;
|