public async ValueTask <IList <Starship> > ExecuteAsync() { if (!_cache.TryGetValue <List <Starship> >(_startshipsCacheKey, out var starships)) { var apiResponse = await ServiceExecutor.ExecuteAsync <ApiResponse>( _logger, () => _starShipsServiceClient.GetStarshipsAsync(1)); starships = apiResponse?.Data?.Starships as List <Starship>; var cacheEntryOptions = new MemoryCacheEntryOptions().SetAbsoluteExpiration(DateTimeOffset.Now.AddDays(1)); _cache.Set(_startshipsCacheKey, starships, cacheEntryOptions); } return(starships); }
public async ValueTask <IList <Starship> > ExecuteAsync() { if (!_cache.TryGetValue <List <Starship> >(_startshipsCacheKey, out var starships)) { starships = new List <Starship>(); ServiceResponse <ApiResponse> apiResponse; var pageNumber = 1; do { apiResponse = await ServiceExecutor.ExecuteAsync <ApiResponse>( _logger, () => _starShipsServiceClient.GetStarshipsAsync(pageNumber)); var collection = apiResponse?.Data?.Starships; starships.AddRange(collection.Select(starship => starship)); pageNumber++; } while (!string.IsNullOrWhiteSpace(apiResponse?.Data.NextPageUrl)); var cacheEntryOptions = new MemoryCacheEntryOptions().SetAbsoluteExpiration(DateTimeOffset.Now.AddDays(1)); _cache.Set(_startshipsCacheKey, starships, cacheEntryOptions); } return(starships); }
private async Task MessageListener_Received(IMessageSender sender, TransportMessage message) { await ServiceExecutor.ExecuteAsync(sender, message); }