Пример #1
0
        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>());
        }
Пример #2
0
        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;
            }));
        }
Пример #3
0
        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);
        }