GiantBomb.Api.GiantBombRestClient.SearchForAllGamesAsync C# (CSharp) Method

SearchForAllGamesAsync() public method

public SearchForAllGamesAsync ( string query, string limitFields = null ) : Task>
query string
limitFields string
return Task>
        public async Task<IEnumerable<Game>> SearchForAllGamesAsync(string query, string[] limitFields = null) {
            var results = new List<Game>();
            var result = await InternalSearchForGames(query, limitFields: limitFields).ConfigureAwait(false);

            if (result == null || result.StatusCode != GiantBombBase.StatusOk)
                return null;

            results.AddRange(result.Results);

            if (result.NumberOfTotalResults > result.Limit) {
                double remaining = Math.Ceiling(Convert.ToDouble(result.NumberOfTotalResults) / Convert.ToDouble(result.Limit));

                // Start on page 2
                for (var i = 2; i <= remaining; i++) {
                    result = await InternalSearchForGames(query, i, result.Limit, limitFields).ConfigureAwait(false);

                    if (result.StatusCode != GiantBombBase.StatusOk)
                        break;

                    results.AddRange(result.Results);
                }
            }

            // FIX: Clean duplicates that GiantBomb returns
            // Can only do it if we have IDs in the resultset
            if (limitFields == null || limitFields.Contains("id"))
            {
                results = results.Distinct(new GameDistinctComparer()).ToList();
            }

            return results;
        }