public async Task <List <Game> > GetAtariAndAmigaGames() { Stopwatch watch = new Stopwatch(); watch.Start(); var bounds = GetIdBounds(); var igdbModels = await _igdbClient.QueryAsync <IGDB.Models.Game>( IGDB.Client.Endpoints.Games, query : string.Format( GamesRequest, string.Join(",", new[] { AtariPlatformId, AmigaPlatformId }), bounds.LowerId, bounds.HigherId, 20)) .ConfigureAwait(false); var result = igdbModels.Select(ToDomainEntity).ToList(); watch.Stop(); var remainingWaitingTime = TimeSpan.FromSeconds(2) - watch.Elapsed; if (remainingWaitingTime > TimeSpan.Zero) { // Sometimes the api is too good x) await Task.Delay(remainingWaitingTime); } switch (_errorEmulator.ErrorType) { case ErrorType.Unknown: throw new InvalidOperationException(); case ErrorType.Network: throw new NetworkException(); case ErrorType.Server: throw new ServerException(); case ErrorType.NoData: return(new List <Game>()); case ErrorType.ErrorOnRefresh: if (DateTime.Now.Second % 2 == 0) { throw new NetworkException(); } throw new ServerException(); } return(result); }
public async Task <Game> GetRandomGame(bool mostPop = false) { var igdbModels = await _igdbClient.QueryAsync <IGDB.Models.Game>( IGDBRestClient.Endpoints.Games, GetStringRequest( new[] { AtariPlatformId, // AmigaPlatformId, })) .ConfigureAwait(false); var result = igdbModels.Select(ToDomainEntity).ToList(); return(result[_randomizer.Next(0, result.Count)]); }