UNPKG

crnc

Version:

currency conversion and functionality for the web

30 lines 1.38 kB
import { requestXml } from "../toolbox/request-xml.js"; import { filterOutCurrenciesNotSupportedByBankOfCanada } from "./bank-of-canada/supported-currencies.js"; /** * Download exchange rates * - from bank of canada valet service https://www.bankofcanada.ca/valet/docs */ export async function downloadExchangeRates({ currencies, }) { currencies = filterOutCurrenciesNotSupportedByBankOfCanada(currencies); const canadian = "CAD"; const nonCanadianOnly = (currency) => currency !== canadian; const toBankOfCanadaSeries = (currency) => `FX${currency}${canadian}`; const series = currencies .filter(nonCanadianOnly) .map(toBankOfCanadaSeries) .join(","); const url = `https://www.bankofcanada.ca/valet/fx_rss/${series}`; const xml = await requestXml(url); const exchangeRateElements = Array.from(xml.querySelectorAll("exchangeRate")); const rawRates = exchangeRateElements.map(element => { const value = parseFloat(element.querySelector("value").textContent); const currency = element.querySelector("targetCurrency").textContent; return { currency, value }; }); const exchangeRates = {}; exchangeRates["CAD"] = 1.0; for (const rate of rawRates) exchangeRates[rate.currency] = 1 / rate.value; return { exchangeRates }; } //# sourceMappingURL=download-exchange-rates.js.map