示例#1
0
        /// <inheritdoc />
        public async Task <RuneListStatic> GetAllAsync(string version, Language language = Language.en_US)
        {
            var cacheKey = RunesCacheKey + language + language + version;
            var wrapper  = cache.Get <string, RuneListStaticWrapper>(cacheKey);

            if (wrapper != null && language == wrapper.Language && version == wrapper.Version)
            {
                return(wrapper.RuneListStatic);
            }
            var json = await requester.CreateGetRequestAsync(Host, CreateUrl(version, language, RunesDataKey)).ConfigureAwait(false);

            var runes = JsonConvert.DeserializeObject <RuneListStatic>(json);

            wrapper = new RuneListStaticWrapper(runes, language, version);
            cache.Add(cacheKey, wrapper, SlidingExpirationTime);
            return(wrapper.RuneListStatic);
        }
示例#2
0
        public async Task <RuneListStatic> GetRunesAsync(Region region, RuneData runeData = RuneData.All,
                                                         Language language = Language.en_US)
        {
            var wrapper = cache.Get <string, RuneListStaticWrapper>(RunesCacheKey);

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

            var runes = JsonConvert.DeserializeObject <RuneListStatic>(json);

            wrapper = new RuneListStaticWrapper(runes, language, runeData);
            cache.Add(RunesCacheKey, wrapper, SlidingExpirationTime);
            return(wrapper.RuneListStatic);
        }
示例#3
0
 /// <summary>
 /// Get a list of all runes asynchronously.
 /// </summary>
 /// <param name="region">Region from which to retrieve the data.</param>
 /// <param name="runeData">Data to retrieve.</param>
 /// <param name="language">Language of the data to be retrieved.</param>
 /// <returns>A RuneListStatic object containing all runes.</returns>
 public async Task<RuneListStatic> GetRunesAsync(Region region, RuneData runeData = RuneData.none,
     Language language = Language.en_US)
 {
     var wrapper = cache.Get<string, RuneListStaticWrapper>(RunesCacheKey);
     if (wrapper != null && !(language != wrapper.Language | runeData != wrapper.RuneData))
     {
         return wrapper.RuneListStatic;
     }
     var json = await requester.CreateGetRequestAsync(
         string.Format(RuneRootUrl, region.ToString()),
         RootDomain,
         new List<string>
         {
             string.Format("locale={0}", language.ToString()),
             runeData == RuneData.none ?
                 string.Empty :
                 string.Format("runeListData={0}", runeData.ToString())
         });
     var runes = await Task.Factory.StartNew(() =>
         JsonConvert.DeserializeObject<RuneListStatic>(json));
     wrapper = new RuneListStaticWrapper(runes, language, runeData);
     cache.Add(RunesCacheKey, wrapper, DefaultSlidingExpiry);
     return wrapper.RuneListStatic;
 }
示例#4
0
 /// <summary>
 /// Get a list of all runes synchronously.
 /// </summary>
 /// <param name="region">Region from which to retrieve the data.</param>
 /// <param name="runeData">Data to retrieve.</param>
 /// <param name="language">Language of the data to be retrieved.</param>
 /// <returns>A RuneListStatic object containing all runes.</returns>
 public RuneListStatic GetRunes(Region region, RuneData runeData = RuneData.none
     , Language language = Language.en_US)
 {
     var wrapper = cache.Get<string, RuneListStaticWrapper>(RunesCacheKey);
     if (wrapper == null || language != wrapper.Language || runeData != wrapper.RuneData)
     {
         var json = requester.CreateGetRequest(
             string.Format(RuneRootUrl, region.ToString()),
             RootDomain,
             new List<string>
             {
                 string.Format("locale={0}", language.ToString()),
                 runeData == RuneData.none ?
                 string.Empty :
                 string.Format("runeListData={0}", runeData.ToString())
             });
         var runes = JsonConvert.DeserializeObject<RuneListStatic>(json);
         wrapper = new RuneListStaticWrapper(runes, language, runeData);
         cache.Add(RunesCacheKey, wrapper, DefaultSlidingExpiry);
     }
     return wrapper.RuneListStatic;
 }