/// <summary> /// Searches for the specified ingredients. /// </summary> /// <param name="ingredients">The ingredients.</param> /// <param name="sorting">The sorting.</param> /// <returns>Task<Domain.RecipeSearchResult>.</returns> public Task <Core.Domain.RecipeSearchResult> Search(string[] ingredients, SearchSorting sorting) { using (_logger.BeginScope("Food2ForkClient.Search")) { var uri = $"{_configuration.Value.BaseUrl}{_configuration.Value.SearchResource}" .Replace("{key}", _configuration.Value.ApiKey) .Replace("{sorting}", GetSortValue(sorting)); var request = uri.WithClient(_client); if (ingredients?.Length > 0) { var query = string.Join(",", ingredients); request = request.SetQueryParam(_configuration.Value.SearchQueryParameter, query); } return(request .GetJsonAsync <RecipeSearchResult>() .ContinueWith(t => { _logger.LogDebug("Result {result}", t.Result); return TinyMapper.Map <Core.Domain.RecipeSearchResult>(t.Result); })); } }
private static string GetSortValue(SearchSorting sorting) { switch (sorting) { case SearchSorting.Rating: return("r"); case SearchSorting.Trending: return("t"); default: throw new ArgumentOutOfRangeException(nameof(sorting), sorting, null); } }