private async Task <IEnumerable <TukUiAddon> > GetAllAddons(WowClientType clientType) { var cacheKey = GetCacheKey(clientType); var results = await _cacheService.GetCache(cacheKey, async() => { try { var query = GetAddonsSuffix(clientType); var result = await CircuitBreaker.ExecuteAsync(async() => await ApiUrl .SetQueryParam(query, "all") .WithTimeout(HttpTimeoutSeconds) .WithHeaders(HttpUtilities.DefaultHeaders) .GetJsonAsync <List <TukUiAddon> >()); if (clientType.IsRetail()) { result.Add(await GetTukUiRetailAddon()); result.Add(await GetElvUiRetailAddon()); } return(result); } catch (Exception ex) { Log.Error(ex, "Failed to get all addons"); throw; } }, 5); return(results ?? new List <TukUiAddon>()); }
private async Task <IEnumerable <TukUiAddon> > GetAllAddons(WowClientType clientType) { var cacheKey = GetCacheKey(clientType); return(await _cacheService.GetCache(cacheKey, async() => { var query = GetAddonsSuffix(clientType); var result = await ApiUrl .SetQueryParam(query, "all") .WithHeaders(HttpUtilities.DefaultHeaders) .GetJsonAsync <List <TukUiAddon> >(); if (clientType.IsRetail()) { result.Add(await GetTukUiRetailAddon()); result.Add(await GetElvUiRetailAddon()); } return result; })); }
private async Task <IEnumerable <TukUiAddon> > GetAllAddons(WowClientType clientType) { var cacheKey = GetCacheKey(clientType); if (_cache.TryGetValue(cacheKey, out var cachedAddons)) { return(cachedAddons as IEnumerable <TukUiAddon>); } var query = GetAddonsSuffix(clientType); var result = await ApiUrl .SetQueryParam(query, "all") .GetJsonAsync <List <TukUiAddon> >(); if (clientType.IsRetail()) { result.Add(await GetTukUiRetailAddon()); result.Add(await GetElvUiRetailAddon()); } _cache.CacheForAbsolute(cacheKey, result, TimeSpan.FromMinutes(10)); return(result); }