/// <summary>
        /// </summary>
        /// <param name="uri">The Uri.</param>
        public async Task <Recipe> GetRecipeAsync(Uri uri)
        {
            var dbRecipe = await _recipeRepositry.GetByUrlAsync(uri.AbsoluteUri).CnfgAwait();

            if (dbRecipe != null)
            {
                _logger.Information("{Uri} pulled from Db", uri.AbsoluteUri);
                return(dbRecipe);
            }

            var eatThisMuchRecipePage = _pageFactory.Create <RecipePage>(uri);
            var recipe = await _parseService.ParseAsync(eatThisMuchRecipePage).CnfgAwait();

            // category info is located on other webpages therefore requires extra parsing.
            recipe.Categories = await _categoryProvider.GetCategoriesAsync(recipe.Url).CnfgAwait();

            _logger.Information("{Uri} scraped from external site", uri.AbsoluteUri);

            return(recipe);
        }