Example #1
0
        /// <summary>
        /// Получить данные банков с обменными курсами.
        /// </summary>
        /// <param name="requests">Список запросов.</param>
        /// <returns></returns>
        public IEnumerable <BankRatesDto> GetBankRates(IEnumerable <BankRequestDto> requsts)
        {
            // Список банков.
            List <BankRatesDto> banks = new List <BankRatesDto>();
            // Инструмент для обработки запроса и получения данных страниц банков.
            var factory = new ExchangeRatesFactory();

            // Получить данные банка по каждому запросу.
            foreach (var req in requsts)
            {
                banks.Add(factory.GetBankRates(req));
            }
            return(banks);
        }
Example #2
0
        /// <summary>
        /// Получить данные банков с обменными курсами асинхронно.
        /// </summary>
        /// <param name="requests">Список запросов.</param>
        /// <returns></returns>
        public async Task <IEnumerable <BankRatesDto> > GetBankRatesAsync(IEnumerable <BankRequestDto> requests)
        {
            // Инструмент для обработки запроса и получения данных страниц банков.
            var factory = new ExchangeRatesFactory();

            // Список задач.
            var tasks = new List <Task <BankRatesDto> >(requests.Count());

            // Получить данные обменных курсов по каждому банку асинхронно.
            // (запустить парсинг каждого сайта параллельно)
            foreach (var req in requests)
            {
                tasks.Add(factory.GetBankRatesAsync(req));
            }

            // Подождать завершения всех задач и получить спиок банков с курсами.
            IEnumerable <BankRatesDto> banks = await Task.WhenAll(tasks);

            return(banks);
        }