UNPKG

egypt-banks-scraper

Version:
100 lines (79 loc) 2.67 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getExchangeRates = exports.banksObjects = undefined; var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _banks = require('./banks'); var _banks2 = _interopRequireDefault(_banks); var _browser = require('./browser'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var banksObjects = {}; _banks2.default.forEach(function (Bank) { var bankObject = new Bank(); banksObjects[bankObject.name.acronym] = bankObject; }); // get currency rate for currencyCode function getCurrencyRates(rates, currencyCode) { for (var i = 0; i < rates.length; i += 1) { var filteredRate = rates[i].code === currencyCode ? rates[i] : undefined; if (filteredRate !== undefined) return filteredRate; } return null; } // get rates that have currency rate function filterCurrencies(rates, currenciesCodes) { var filteredRates = []; currenciesCodes.forEach(function (code) { var rate = getCurrencyRates(rates, code); if (rate === null) return; filteredRates.push(rate); }); return filteredRates; } async function getExchangeRates(banks, currencies) { var browser = await (0, _browser.getBrowser)(); var getRates = async function getRates(bank) { try { var rates = await bank.scrape(browser); // If currencies array empty get all rates var filteredRates = currencies.length === 0 ? rates : filterCurrencies(rates, currencies); return { name: bank.name, rates: filteredRates }; } catch (e) { // console.log('error on get rates:', e); return { name: bank.name, rates: [] }; } }; // If banks array empty get all banks names var filteredBanks = banks.length === 0 ? (0, _keys2.default)(banksObjects) : banks; var result = {}; var banksPromises = []; var ratesPromises = []; for (var i = 0; i < filteredBanks.length; i += 1) { var bankName = filteredBanks[i]; var bank = banksObjects[bankName]; if (bank) { ratesPromises.push(getRates(bank)); } } banksPromises = await _promise2.default.all(ratesPromises); banksPromises.forEach(function (value) { result[value.name.acronym] = value; }); await browser.close(); return result; } // getExchangeRates(['AIB'], []).then((data) => { // console.log('data:', data); // }); exports.banksObjects = banksObjects; exports.getExchangeRates = getExchangeRates;