/// <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); }
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); }
/// <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; }
/// <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; }