コード例 #1
0
        /// <summary>
        /// Searches for the specified ingredients.
        /// </summary>
        /// <param name="ingredients">The ingredients.</param>
        /// <param name="sorting">The sorting.</param>
        /// <returns>Task&lt;Domain.RecipeSearchResult&gt;.</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);
                }));
            }
        }
コード例 #2
0
        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);
            }
        }