private IEnumerable <ExchangeRates> GetExchangeRatesFromSources(IEnumerable <ExchangeRateSource> exchangeRateSources, HtmlNode rootNode)
        {
            const string ExchangeRateDiv                 = "div.col-xs-12.gray-round-1px-border";
            const string ExchangeRateSourceHeading       = "h3#homeHeading";
            const string ExchangeRateUpdateDateParagraph = "p.no-margin.full-width.black-text";

            IEnumerable <HtmlNode> exchangeRateHtmlNodes = rootNode.CssSelect(ExchangeRateDiv);

            foreach (HtmlNode exchangeRateNode in exchangeRateHtmlNodes)
            {
                string exchangeRateSourceText = exchangeRateNode.CssSelect(ExchangeRateSourceHeading).First().InnerText;
                string updatedAtText          = exchangeRateNode.CssSelect(ExchangeRateUpdateDateParagraph).First().InnerText;

                if (!_kinguilaHojeSourceMapper.CanMap(exchangeRateSourceText))
                {
                    continue;
                }

                ExchangeRateSource exchangeRateSource = _kinguilaHojeSourceMapper.Map(exchangeRateSourceText);
                if (!exchangeRateSources.Contains(exchangeRateSource))
                {
                    continue;
                }

                DateTimeOffset             updatedAt     = _pageTextualInformationParser.ParseDate(updatedAtText);
                IEnumerable <CurrencyRate> currencyRates = GetCurrencyRates(exchangeRateNode);

                yield return(new ExchangeRates(exchangeRateSource, updatedAt, currencyRates));
            }
        }
        public async Task <IEnumerable <ExchangeRates> > GetExchangeRateFromAllSources()
        {
            Uri kinguilaHojeUri = new Uri("http://www.kinguilahoje.com/");

            ScrapingBrowser browser          = new ScrapingBrowser();
            WebPage         kinguilaHomePage = await browser.NavigateToPageAsync(kinguilaHojeUri);

            return(GetExchangeRatesFromSources(ExchangeRateSource.GetAll(), kinguilaHomePage.Html));
        }