public async Task <ChampionListStatic> GetAllAsync(string version, Language language = Language.en_US, bool fullData = true)
        {
            var cacheKey = ChampionsCacheKey + language + version;
            var wrapper  = cache.Get <string, ChampionListStaticWrapper>(cacheKey);

            if (wrapper != null && language == wrapper.Language && version == wrapper.Version)
            {
                return(wrapper.ChampionListStatic);
            }
            var json = await requester.CreateGetRequestAsync(Host, CreateUrl(version, language, fullData ? ChampionsFullDataKey : ChampionsDataKey)).ConfigureAwait(false);

            var champs = JsonConvert.DeserializeObject <ChampionListStatic>(json);

            wrapper = new ChampionListStaticWrapper(champs, language, version);
            cache.Add(cacheKey, wrapper, SlidingExpirationTime);
            return(wrapper.ChampionListStatic);
        }
Example #2
0
        public async Task <ChampionListStatic> GetChampionsAsync(Region region,
                                                                 ChampionData championData = ChampionData.All, Language language = Language.en_US)
        {
            var wrapper = cache.Get <string, ChampionListStaticWrapper>(ChampionsCacheKey);

            if (wrapper != null && language == wrapper.Language && championData == wrapper.ChampionData)
            {
                return(wrapper.ChampionListStatic);
            }
            var json = await requester.CreateGetRequestAsync(StaticDataRootUrl + ChampionsUrl, region,
                                                             new List <string>
            {
                $"locale={language}",
                championData == ChampionData.Basic ?
                string.Empty :
                string.Format(TagsParameter, championData.ToString().ToLower())
            }).ConfigureAwait(false);

            var champs = JsonConvert.DeserializeObject <ChampionListStatic>(json);

            wrapper = new ChampionListStaticWrapper(champs, language, championData);
            cache.Add(ChampionsCacheKey, wrapper, SlidingExpirationTime);
            return(wrapper.ChampionListStatic);
        }
Example #3
0
 /// <summary>
 /// Get a list of all champions synchronously.
 /// </summary>
 /// <param name="region">Region from which to retrieve the data.</param>
 /// <param name="championData">Data to retrieve.</param>
 /// <param name="language">Language of the data to be retrieved.</param>
 /// <returns>A ChampionListStatic object containing all champions.</returns>
 public ChampionListStatic GetChampions(Region region, ChampionData championData = ChampionData.none,
     Language language = Language.en_US)
 {
     var wrapper = cache.Get<string, ChampionListStaticWrapper>(ChampionsCacheKey);
     if (wrapper == null || language != wrapper.Language || championData != wrapper.ChampionData)
     {
         var json = requester.CreateGetRequest(
             string.Format(ChampionRootUrl, region.ToString()),
             RootDomain,
             new List<string> {
                 string.Format("locale={0}", language.ToString()),
                 championData == ChampionData.none ?
                 string.Empty :
                 string.Format("champData={0}", championData.ToString())
             });
         var champs = JsonConvert.DeserializeObject<ChampionListStatic>(json);
         wrapper = new ChampionListStaticWrapper(champs, language, championData);
         cache.Add(ChampionsCacheKey, wrapper, DefaultSlidingExpiry);
     }
     return wrapper.ChampionListStatic;
 }
Example #4
0
 /// <summary>
 /// Get a list of all champions asynchronously.
 /// </summary>
 /// <param name="region">Region from which to retrieve the data.</param>
 /// <param name="championData">Data to retrieve.</param>
 /// <param name="language">Language of the data to be retrieved.</param>
 /// <returns>A ChampionListStatic object containing all champions.</returns>
 public async Task<ChampionListStatic> GetChampionsAsync(Region region,
     ChampionData championData = ChampionData.none, Language language = Language.en_US)
 {
     var wrapper = cache.Get<string, ChampionListStaticWrapper>(ChampionsCacheKey);
     if (wrapper != null && language == wrapper.Language && championData == wrapper.ChampionData)
     {
         return wrapper.ChampionListStatic;
     }
     var json = await requester.CreateGetRequestAsync(
         string.Format(ChampionRootUrl, region.ToString()),
         RootDomain,
         new List<string>
         {
             string.Format("locale={0}", language.ToString()),
             championData == ChampionData.none ?
                 string.Empty :
                 string.Format("champData={0}", championData.ToString())
         });
     var champs = await Task.Factory.StartNew(() =>
         JsonConvert.DeserializeObject<ChampionListStatic>(json));
     wrapper = new ChampionListStaticWrapper(champs, language, championData);
     cache.Add(ChampionsCacheKey, wrapper, DefaultSlidingExpiry);
     return wrapper.ChampionListStatic;
 }