easy-currencies
Version:
A tool for easy conversion of currencies.
153 lines • 9.37 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.providers = exports.resolveProvider = void 0;
/**
* A function that constructs provider based on raw input data.
*
* @export
* @param {ProviderReference} provider object containing provider name and api key
* @returns {Provider} constructed provider
*/
function resolveProvider(provider) {
const existentProvider = exports.providers[provider.name];
if (!existentProvider) {
throw "No provider with this name. Please use a provider from the supported providers list.";
}
// attaching key
existentProvider.key = provider.key;
return existentProvider;
}
exports.resolveProvider = resolveProvider;
/**
* Provider map initialization
*/
exports.providers = {
ExchangeRateAPI: {
endpoint: {
base: "https://api.exchangerate-api.com/v4/latest/",
single: "%FROM%",
multiple: "%FROM%"
},
key: undefined,
handler: function (data) {
return data.rates;
},
errors: { 400: "Malformed query.", 404: "Currency not found" },
errorHandler: function (data) {
return data.status;
}
},
ExchangeRatesAPIIO: {
endpoint: {
base: "http://api.exchangeratesapi.io/latest?access_key=%KEY%",
single: "&base=%FROM%&symbols=%TO%",
multiple: "&base=%FROM%"
},
errors: {
105: "A paid plan is required in order to use other base currencies!",
101: "Invalid API key!",
201: "Invalid base currency."
},
key: undefined,
handler: function (data) {
return data.rates;
},
errorHandler: function (data) {
return data.status;
}
},
CurrencyLayer: {
endpoint: {
base: "http://apilayer.net/api/live?access_key=%KEY%",
single: "&source=%FROM%",
multiple: "&source=%FROM%¤cies=%TO%"
},
key: undefined,
handler: function (data) {
const map = {};
Object.keys(data.quotes).map((key) => {
map[key.slice(3)] = data.quotes[key];
});
return map;
},
errors: {
105: "A paid plan is required in order to use CurrencyLayer (base currency use not allowed)",
101: "Invalid API key!",
201: "Invalid base currency.",
106: "No results."
},
errorHandler: function (data) {
return data.error ? data.error.code : null;
}
},
OpenExchangeRates: {
endpoint: {
base: "https://openexchangerates.org/api/latest.json?app_id=%KEY%",
single: "&base=%FROM%",
multiple: "&base=%FROM%"
},
key: undefined,
handler: function (data) {
return data.rates;
},
errors: {
401: "Invalid API key!"
},
errorHandler: function (data) {
return data.status;
}
},
AlphaVantage: {
endpoint: {
base: "https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&apikey=%KEY%",
single: "&from_currency=%FROM%&to_currency=%TO%",
multiple: ""
},
key: undefined,
handler: function (data) {
const map = {};
const o = data[Object.keys(data)[0]];
map[o["3. To_Currency Code"]] = o["5. Exchange Rate"];
return map;
},
errors: {
503: "Invalid API key or Malformed query."
},
errorHandler: function (data) {
if (!data) {
return null;
}
// AlphaVantage does not return error codes in the response,
// so we have to check if the response contains error messages
// and translate them to error codes if possible.
const hasError = data["Error Message"] || data["Information"];
if (hasError === null || hasError === void 0 ? void 0 : hasError.includes("API rate limit")) {
return 429;
}
if (hasError) {
return hasError;
}
return null;
}
},
Fixer: {
endpoint: {
base: "http://data.fixer.io/api/latest?access_key=%KEY%",
single: "&base=%FROM%&symbols=%TO%",
multiple: "&base=%FROM%"
},
key: undefined,
handler: function (data) {
return data.rates;
},
errors: {
105: "A paid plan is required in order to use Fixer.io (base currency use not allowed)",
101: "Invalid API key!",
201: "Invalid base currency."
},
errorHandler: function (data) {
return data.error ? data.error.code : null;
}
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnRzL3Byb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnR0E7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLFFBQTJCO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdEIsTUFBTSxzRkFBc0YsQ0FBQztJQUMvRixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ3BDLE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQztBQVRELDBDQVNDO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLFNBQVMsR0FBYztJQUNsQyxlQUFlLEVBQUU7UUFDZixRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsNkNBQTZDO1lBQ25ELE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFFBQVEsRUFBRSxRQUFRO1NBQ25CO1FBQ0QsR0FBRyxFQUFFLFNBQVM7UUFDZCxPQUFPLEVBQUUsVUFBVSxJQUFTO1lBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO1FBQ0QsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRTtRQUM5RCxZQUFZLEVBQUUsVUFBVSxJQUFTO1lBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDO0tBQ0Y7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixRQUFRLEVBQUU7WUFDUixJQUFJLEVBQUUsd0RBQXdEO1lBQzlELE1BQU0sRUFBRSwyQkFBMkI7WUFDbkMsUUFBUSxFQUFFLGNBQWM7U0FDekI7UUFDRCxNQUFNLEVBQUU7WUFDTixHQUFHLEVBQUUsZ0VBQWdFO1lBQ3JFLEdB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
;