/// <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); }