/// <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 <RuneListStaticWrapper>(RunesCacheKey); if (wrapper != null && !(language != wrapper.Language | runeData != wrapper.RuneData)) { return(wrapper.RuneListStatic); } var json = await requester.CreateRequestAsync( 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); return(wrapper.RuneListStatic); }
/// <summary> /// Get a rune asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="runeId">Id of the rune to retrieve.</param> /// <param name="runeData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>A rune.</returns> public async Task <RuneStatic> GetRuneAsync(Region region, int runeId, RuneData runeData = RuneData.none, Language language = Language.en_US) { var wrapper = Cache.Get <RuneStaticWrapper>(RuneCacheKey + runeId); if (wrapper != null && wrapper.Language == language && wrapper.RuneData == RuneData.all) { return(wrapper.RuneStatic); } var listWrapper = Cache.Get <RuneListStaticWrapper>(RunesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.RuneData == runeData) { return(listWrapper.RuneListStatic.Runes.ContainsKey(runeId) ? listWrapper.RuneListStatic.Runes[runeId] : null); } var json = await requester.CreateRequestAsync( string.Format(RuneRootUrl, region.ToString()) + string.Format(IdUrl, runeId), RootDomain, new List <string> { string.Format("locale={0}", language.ToString()), runeData == RuneData.none ? string.Empty : string.Format("runeData={0}", runeData.ToString()) }); var rune = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <RuneStatic>(json)); Cache.Add(RuneCacheKey + runeId, new RuneStaticWrapper(rune, language, runeData)); return(rune); }
/// <summary> /// Retrieve realm data synchronously. /// </summary> /// <param name="region">Region corresponding to data to retrieve.</param> /// <returns>A realm object containing the requested information.</returns> /*public RealmStatic GetRealm(Region region) * { * var wrapper = cache.Get<string, RealmStaticWrapper>(RealmCacheKey); * if (wrapper != null) * { * return wrapper.RealmStatic; * } * * var json = requester.CreateGetRequest(string.Format(RealmRootUrl, region.ToString()), RootDomain); * var realm = JsonConvert.DeserializeObject<RealmStatic>(json); * * cache.Add(RealmCacheKey, new RealmStaticWrapper(realm), DefaultSlidingExpiry); * * return realm; * } * * /// <summary> * /// Retrieve realm data asynchronously. * /// </summary> * /// <param name="region">Region corresponding to data to retrieve.</param> * /// <returns>A realm object containing the requested information.</returns> * public async Task<RealmStatic> GetRealmAsync(Region region) * { * var wrapper = cache.Get<string, RealmStaticWrapper>(RealmCacheKey); * if (wrapper != null) * { * return wrapper.RealmStatic; * } * * var json = await requester.CreateGetRequestAsync(string.Format(RealmRootUrl, region.ToString()), RootDomain); * var realm = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<RealmStatic>(json)); * * cache.Add(RealmCacheKey, new RealmStaticWrapper(realm), DefaultSlidingExpiry); * * return realm; * }*/ /// <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.basic , Language language = Language.en_US) { var wrapper = cache.Get <string, RuneListStaticWrapper>(RunesCacheKey); if (wrapper == null || language != wrapper.Language || runeData != wrapper.RuneData) { var args = "{\"data\" : \"" + runeData.ToString() + "\", \"region\" : \"" + region.ToString() + "\"}"; var ir = new Amazon.Lambda.Model.InvokeRequest { FunctionName = "arn:aws:lambda:us-east-1:907841483528:function:staticGetRune", PayloadStream = AWSSDKUtils.GenerateMemoryStreamFromString(args) }; var json = ""; var test = Task.Run(async() => { var resp = await App.lambdaClient.InvokeAsync(ir); var sr = new StreamReader(resp.Payload); json = sr.ReadToEnd(); }); test.Wait(); var runes = JsonConvert.DeserializeObject <RuneListStatic>(json); wrapper = new RuneListStaticWrapper(runes, language, runeData); cache.Add(RunesCacheKey, wrapper, DefaultSlidingExpiry); } return(wrapper.RuneListStatic); }
/// <summary> /// Get a rune asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="runeId">Id of the rune to retrieve.</param> /// <param name="runeData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>A rune.</returns> public async Task <RuneStatic> GetRuneAsync(Region region, int runeId, RuneData runeData = RuneData.basic, Language language = Language.en_US) { var wrapper = cache.Get <string, RuneStaticWrapper>(RuneCacheKey + runeId); if (wrapper != null && wrapper.Language == language && wrapper.RuneData == RuneData.all) { return(wrapper.RuneStatic); } var listWrapper = cache.Get <string, RuneListStaticWrapper>(RunesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.RuneData == runeData) { return(listWrapper.RuneListStatic.Runes.ContainsKey(runeId) ? listWrapper.RuneListStatic.Runes[runeId] : null); } var args = "{\"data\" : \"" + runeData.ToString() + "\", \"region\" : \"" + region.ToString() + ", \"id\" : \"" + runeId + "\"}"; var ir = new Amazon.Lambda.Model.InvokeRequest { FunctionName = "arn:aws:lambda:us-east-1:907841483528:function:staticGetRune", PayloadStream = AWSSDKUtils.GenerateMemoryStreamFromString(args) }; var json = ""; var resp = await App.lambdaClient.InvokeAsync(ir); var sr = new StreamReader(resp.Payload); json = sr.ReadToEnd(); var rune = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <RuneStatic>(json)); cache.Add(RuneCacheKey + runeId, new RuneStaticWrapper(rune, language, runeData), DefaultSlidingExpiry); return(rune); }
public async Task <RuneStatic> GetRuneAsync(Region region, int runeId, RuneData runeData = RuneData.All, Language language = Language.en_US) { var wrapper = cache.Get <string, RuneStaticWrapper>(RuneByIdCacheKey + runeId); if (wrapper != null && wrapper.Language == language && wrapper.RuneData == RuneData.All) { return(wrapper.RuneStatic); } var listWrapper = cache.Get <string, RuneListStaticWrapper>(RunesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.RuneData == runeData) { return(listWrapper.RuneListStatic.Runes.ContainsKey(runeId) ? listWrapper.RuneListStatic.Runes[runeId] : null); } var json = await requester.CreateGetRequestAsync( StaticDataRootUrl + string.Format(RuneByIdUrl, runeId), region, new List <string> { $"locale={language}", runeData == RuneData.Basic ? string.Empty : string.Format(TagsParameter, runeData.ToString().ToLower()) }).ConfigureAwait(false); var rune = JsonConvert.DeserializeObject <RuneStatic>(json); cache.Add(RuneByIdCacheKey + runeId, new RuneStaticWrapper(rune, language, runeData), SlidingExpirationTime); return(rune); }
/// <summary> /// Get a rune synchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="runeId">Id of the rune to retrieve.</param> /// <param name="runeData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>A rune.</returns> public RuneStatic GetRune(Region region, int runeId, RuneData runeData = RuneData.none, Language language = Language.en_US) { var wrapper = Cache.Get <RuneStaticWrapper>(RuneCacheKey + runeId); if (wrapper != null && wrapper.Language == language && wrapper.RuneData == RuneData.all) { return(wrapper.RuneStatic); } else { var listWrapper = Cache.Get <RuneListStaticWrapper>(RunesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.RuneData == runeData) { if (listWrapper.RuneListStatic.Runes.ContainsKey(runeId)) { return(listWrapper.RuneListStatic.Runes[runeId]); } else { return(null); } } else { var json = requester.CreateRequest( string.Format(RuneRootUrl, region.ToString()) + string.Format(IdUrl, runeId), region, new List <string>() { string.Format("locale={0}", language.ToString()), runeData == RuneData.none ? string.Empty : string.Format("runeData={0}", runeData.ToString()) }); var rune = JsonConvert.DeserializeObject <RuneStatic>(json); Cache.Add <RuneStaticWrapper>(RuneCacheKey + runeId, new RuneStaticWrapper(rune, language, runeData)); return(rune); } } }
/// <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 <RuneListStaticWrapper>(RunesCacheKey); if (wrapper == null || language != wrapper.Language || runeData != wrapper.RuneData) { var json = requester.CreateRequest(string.Format(RuneRootUrl, region.ToString()) , 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 <RuneListStaticWrapper>(RunesCacheKey, wrapper); } 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 rune asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="runeId">Id of the rune to retrieve.</param> /// <param name="runeData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>A rune.</returns> public async Task<RuneStatic> GetRuneAsync(Region region, int runeId, RuneData runeData = RuneData.none , Language language = Language.en_US) { var wrapper = Cache.Get<RuneStaticWrapper>(RuneCacheKey + runeId); if (wrapper != null && wrapper.Language == language && wrapper.RuneData == RuneData.all) { return wrapper.RuneStatic; } else { var listWrapper = Cache.Get<RuneListStaticWrapper>(RunesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.RuneData == runeData) { if (listWrapper.RuneListStatic.Runes.ContainsKey(runeId)) { return listWrapper.RuneListStatic.Runes[runeId]; } else { return null; } } else { var json = await requester.CreateRequestAsync(string.Format(RuneRootUrl, region.ToString()) + string.Format(IdUrl, runeId) , new List<string>() { string.Format("locale={0}", language.ToString()) , runeData == RuneData.none ? string.Empty : string.Format("runeData={0}", runeData.ToString()) }); var rune = await JsonConvert.DeserializeObjectAsync<RuneStatic>(json); Cache.Add<RuneStaticWrapper>(RuneCacheKey + runeId, new RuneStaticWrapper(rune, language, runeData)); return rune; } } }
/// <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<RuneListStaticWrapper>(RunesCacheKey); if (wrapper == null || language != wrapper.Language | runeData != wrapper.RuneData) { var json = await requester.CreateRequestAsync(string.Format(RuneRootUrl, region.ToString()) , new List<string>() { string.Format("locale={0}", language.ToString()) , runeData == RuneData.none ? string.Empty : string.Format("runeListData={0}", runeData.ToString()) }); var runes = await JsonConvert.DeserializeObjectAsync<RuneListStatic>(json); wrapper = new RuneListStaticWrapper(runes, language, runeData); Cache.Add<RuneListStaticWrapper>(RunesCacheKey, wrapper); } return wrapper.RuneListStatic; }
/// <summary> /// Get a rune asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="runeId">Id of the rune to retrieve.</param> /// <param name="runeData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>A rune.</returns> public async Task<RuneStatic> GetRuneAsync(Region region, int runeId, RuneData runeData = RuneData.none, Language language = Language.en_US) { var wrapper = cache.Get<string, RuneStaticWrapper>(RuneCacheKey + runeId); if (wrapper != null && wrapper.Language == language && wrapper.RuneData == RuneData.all) { return wrapper.RuneStatic; } var listWrapper = cache.Get<string, RuneListStaticWrapper>(RunesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.RuneData == runeData) { return listWrapper.RuneListStatic.Runes.ContainsKey(runeId) ? listWrapper.RuneListStatic.Runes[runeId] : null; } var json = await requester.CreateGetRequestAsync( string.Format(RuneRootUrl, region.ToString()) + string.Format(IdUrl, runeId), RootDomain, new List<string> { string.Format("locale={0}", language.ToString()), runeData == RuneData.none ? string.Empty : string.Format("runeData={0}", runeData.ToString()) }); var rune = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<RuneStatic>(json)); cache.Add(RuneCacheKey + runeId, new RuneStaticWrapper(rune, language, runeData), DefaultSlidingExpiry); return rune; }
/// <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; }