/// <summary> /// Get a mastery asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryId">Id of the mastery to retrieve.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of th data to be retrieved.</param> /// <returns>A mastery.</returns> public async Task <MasteryStatic> GetMasteryAsync(Region region, int masteryId, MasteryData masteryData = MasteryData.basic, Language language = Language.en_US) { var wrapper = cache.Get <string, MasteryStaticWrapper>(MasteryCacheKey + masteryId); if (wrapper != null && wrapper.Language == language && wrapper.MasteryData == masteryData) { return(wrapper.MasteryStatic); } var listWrapper = cache.Get <string, MasteryListStaticWrapper>(MasteriesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.MasteryData == masteryData) { return(listWrapper.MasteryListStatic.Masteries.ContainsKey(masteryId) ? listWrapper.MasteryListStatic.Masteries[masteryId] : null); } var args = "{\"data\" : \"" + masteryData.ToString() + "\", \"region\" : \"" + region.ToString() + ", \"id\" : \"" + masteryId + "\"}"; var ir = new Amazon.Lambda.Model.InvokeRequest { FunctionName = "arn:aws:lambda:us-east-1:907841483528:function:staticGetMastery", PayloadStream = AWSSDKUtils.GenerateMemoryStreamFromString(args) }; var json = ""; var resp = await App.lambdaClient.InvokeAsync(ir); var sr = new StreamReader(resp.Payload); json = sr.ReadToEnd(); var mastery = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <MasteryStatic>(json)); cache.Add(MasteryCacheKey + masteryId, new MasteryStaticWrapper(mastery, language, masteryData), DefaultSlidingExpiry); return(mastery); }
public async Task <MasteryStatic> GetMasteryAsync(Region region, int masteryId, MasteryData masteryData = MasteryData.All, Language language = Language.en_US) { var wrapper = cache.Get <string, MasteryStaticWrapper>(MasteryByIdCacheKey + masteryId); if (wrapper != null && wrapper.Language == language && wrapper.MasteryData == masteryData) { return(wrapper.MasteryStatic); } var listWrapper = cache.Get <string, MasteryListStaticWrapper>(MasteriesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.MasteryData == masteryData) { return(listWrapper.MasteryListStatic.Masteries.ContainsKey(masteryId) ? listWrapper.MasteryListStatic.Masteries[masteryId] : null); } var json = await requester.CreateGetRequestAsync( StaticDataRootUrl + string.Format(MasteryByIdUrl, masteryId), region, new List <string> { $"locale={language}", masteryData == MasteryData.Basic ? string.Empty : string.Format(TagsParameter, masteryData.ToString().ToLower()) }).ConfigureAwait(false); var mastery = JsonConvert.DeserializeObject <MasteryStatic>(json); cache.Add(MasteryByIdCacheKey + masteryId, new MasteryStaticWrapper(mastery, language, masteryData), SlidingExpirationTime); return(mastery); }
/// <summary> /// Get a list of all masteries asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>An MasteryListStatic object containing all masteries.</returns> public async Task <MasteryListStatic> GetMasteriesAsync(Region region, MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = Cache.Get <MasteryListStaticWrapper>(MasteriesCacheKey); if (wrapper != null && language == wrapper.Language && masteryData == wrapper.MasteryData) { return(wrapper.MasteryListStatic); } var json = await requester.CreateRequestAsync( string.Format(MasteryRootUrl, region.ToString()), RootDomain, new List <string> { string.Format("locale={0}", language.ToString()), masteryData == MasteryData.none ? string.Empty : string.Format("masteryListData={0}", masteryData.ToString()) }); var masteries = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <MasteryListStatic>(json)); wrapper = new MasteryListStaticWrapper(masteries, language, masteryData); Cache.Add(MasteriesCacheKey, wrapper); return(wrapper.MasteryListStatic); }
/// <summary> /// Get a mastery asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryId">Id of the mastery to retrieve.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of th data to be retrieved.</param> /// <returns>A mastery.</returns> public async Task <MasteryStatic> GetMasteryAsync(Region region, int masteryId, MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = Cache.Get <MasteryStaticWrapper>(MasteryCacheKey + masteryId); if (wrapper != null && wrapper.Language == language && wrapper.MasteryData == masteryData) { return(wrapper.MasteryStatic); } var listWrapper = Cache.Get <MasteryListStaticWrapper>(MasteriesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.MasteryData == masteryData) { return(listWrapper.MasteryListStatic.Masteries.ContainsKey(masteryId) ? listWrapper.MasteryListStatic.Masteries[masteryId] : null); } var json = await requester.CreateRequestAsync( string.Format(MasteryRootUrl, region.ToString()) + string.Format(IdUrl, masteryId.ToString()), RootDomain, new List <string> { string.Format("locale={0}", language.ToString()), masteryData == MasteryData.none ? string.Empty : string.Format("masteryData={0}", masteryData.ToString()) }); var mastery = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <MasteryStatic>(json)); Cache.Add(MasteryCacheKey + masteryId , new MasteryStaticWrapper(mastery, language, masteryData)); return(mastery); }
public MasteryData GetMasteries(region region, language lang, masteryListData?masteryData = null, bool useCaching = false) { MasteryData val = Cache.Get <MasteryData>(region.ToString(), lang.ToString(), masteryData.ToString()); //cache getting if (val != null) { return(val); } RiotApiCaller <MasteryData> caller = new RiotApiCaller <MasteryData>(suffix.mastery); caller.AddParam(param.region, region); caller.AddParam(param.locale, lang); if (masteryData != null) { caller.AddParam(param.masteryListData, masteryData); } else { caller.AddParam(param.masteryListData, ""); //important for basic information } if (useCaching) //your choice { Cache.AddOrUpdate(caller.CreateRequest(new System.TimeSpan(1, 0, 0, 0))); // cache adding } else { caller.CreateRequest();//everytime data coming from riotgames server } return(caller.Result.FirstOrDefault()); }
/// <summary> /// Retrieve language strings synchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <param name="version">Version of the dragon API.</param> /// <returns>A object containing the language strings.</returns> /*public LanguageStringsStatic GetLanguageStrings(Region region, Language language = Language.en_US, * string version = "5.3.1") * { * var wrapper = cache.Get<string, LanguageStringsStaticWrapper>(LanguageStringsCacheKey); * if (wrapper != null && wrapper.Language == language && wrapper.Version == version) * { * return wrapper.LanguageStringsStatic; * } * * var json = requester.CreateGetRequest(string.Format(LanguageStringsRootUrl, region.ToString()), RootDomain, * new List<string> { * string.Format("locale={0}", language.ToString()), * string.Format("version={0}", version) * }); * var languageStrings = JsonConvert.DeserializeObject<LanguageStringsStatic>(json); * * cache.Add(LanguageStringsCacheKey, new LanguageStringsStaticWrapper(languageStrings, * language, version), DefaultSlidingExpiry); * * return languageStrings; * } * * /// <summary> * /// Retrieve language strings asynchronously. * /// </summary> * /// <param name="region">Region from which to retrieve the data.</param> * /// <param name="language">Language of the data to be retrieved.</param> * /// <param name="version">Version of the dragon API.</param> * /// <returns>A object containing the language strings.</returns> * public async Task<LanguageStringsStatic> GetLanguageStringsAsync(Region region, * Language language = Language.en_US, string version = "5.3.1") * { * var wrapper = cache.Get<string, LanguageStringsStaticWrapper>(LanguageStringsCacheKey); * if (wrapper != null && wrapper.Language == language && wrapper.Version == version) * { * return wrapper.LanguageStringsStatic; * } * * var json = await requester.CreateGetRequestAsync(string.Format(LanguageStringsRootUrl, region.ToString()), * RootDomain, new List<string> { * string.Format("locale={0}", language.ToString()), * string.Format("version={0}", version) * }); * var languageStrings = await Task.Factory.StartNew(() * => JsonConvert.DeserializeObject<LanguageStringsStatic>(json)); * * cache.Add(LanguageStringsCacheKey, new LanguageStringsStaticWrapper(languageStrings, * language, version), DefaultSlidingExpiry); * * return languageStrings; * } * * /// <summary> * /// Get languages synchronously. * /// </summary> * /// <param name="region">Region from which to retrieve the data.</param> * /// <returns>A list of languages.</returns> * public List<Language> GetLanguages(Region region) * { * var wrapper = cache.Get<string, List<Language>>(LanguagesCacheKey); * if (wrapper != null) * { * return wrapper; * } * * var json = requester.CreateGetRequest(string.Format(LanguagesRootUrl, region.ToString()), RootDomain); * var languages = JsonConvert.DeserializeObject<List<Language>>(json); * * cache.Add(LanguagesCacheKey, languages, DefaultSlidingExpiry); * * return languages; * } * * /// <summary> * /// Get languages asynchronously. * /// </summary> * /// <param name="region">Region from which to retrieve the data.</param> * /// <returns>A list of languages.</returns> * public async Task<List<Language>> GetLanguagesAsync(Region region) * { * var wrapper = cache.Get<string, List<Language>>(LanguagesCacheKey); * if (wrapper != null) * { * return wrapper; * } * * var json = await requester.CreateGetRequestAsync(string.Format(LanguagesRootUrl, region.ToString()), * RootDomain); * var languages = await Task.Factory.StartNew(() => * JsonConvert.DeserializeObject<List<Language>>(json)); * * cache.Add(LanguagesCacheKey, languages, DefaultSlidingExpiry); * * return languages; * } * * /// <summary> * /// Get maps synchronously. * /// </summary> * /// <param name="region">Region from which to retrieve the data.</param> * /// <param name="language">Language of the data to be retrieved.</param> * /// <param name="version">Version of the dragon API.</param> * /// <returns>A list of objects representing maps.</returns> * public List<MapStatic> GetMaps(Region region, Language language = Language.en_US, string version = "5.3.1") * { * var wrapper = cache.Get<string, MapsStaticWrapper>(MapCacheKey); * if (wrapper != null && wrapper.Language == language && wrapper.Version == version) * { * return wrapper.MapsStatic.Data.Values.ToList(); * } * * var json = requester.CreateGetRequest(string.Format(MapRootUrl, region.ToString()), RootDomain, * new List<string> { * string.Format("locale={0}", language.ToString()), * string.Format("version={0}", version) * }); * var maps = JsonConvert.DeserializeObject<MapsStatic>(json); * * cache.Add(MapCacheKey, new MapsStaticWrapper(maps, language, version), DefaultSlidingExpiry); * * return maps.Data.Values.ToList(); * } * * /// <summary> * /// Get maps asynchronously. * /// </summary> * /// <param name="region">Region from which to retrieve the data.</param> * /// <param name="language">Language of the data to be retrieved.</param> * /// <param name="version">Version of the dragon API.</param> * /// <returns>A list of objects representing maps.</returns> * public async Task<List<MapStatic>> GetMapsAsync(Region region, Language language = Language.en_US, * string version = "5.3.1") * { * var wrapper = cache.Get<string, MapsStaticWrapper>(MapCacheKey); * if (wrapper != null && wrapper.Language == language && wrapper.Version == version) * { * return wrapper.MapsStatic.Data.Values.ToList(); * } * * var json = await requester.CreateGetRequestAsync(string.Format(MapRootUrl, region.ToString()), RootDomain, * new List<string> { * string.Format("locale={0}", language.ToString()), * string.Format("version={0}", version) * }); * var maps = await Task.Factory.StartNew(() => * JsonConvert.DeserializeObject<MapsStatic>(json)); * * cache.Add(MapCacheKey, new MapsStaticWrapper(maps, language, version), DefaultSlidingExpiry); * * return maps.Data.Values.ToList(); * }*/ /// <summary> /// Get a list of all masteries synchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>An MasteryListStatic object containing all masteries.</returns> public MasteryListStatic GetMasteries(Region region, MasteryData masteryData = MasteryData.basic, Language language = Language.en_US) { var wrapper = cache.Get <string, MasteryListStaticWrapper>(MasteriesCacheKey); if (wrapper == null || language != wrapper.Language || masteryData != wrapper.MasteryData) { var args = "{\"data\" : \"" + masteryData.ToString() + "\", \"region\" : \"" + region.ToString() + "\"}"; var ir = new Amazon.Lambda.Model.InvokeRequest { FunctionName = "arn:aws:lambda:us-east-1:907841483528:function:staticGetMastery", 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 masteries = JsonConvert.DeserializeObject <MasteryListStatic>(json); wrapper = new MasteryListStaticWrapper(masteries, language, masteryData); cache.Add(MasteriesCacheKey, wrapper, DefaultSlidingExpiry); } return(wrapper.MasteryListStatic); }
public void GetMasteries() { ApiService.ApiKey = APIKEY;//you must add your project, if you dont use ninject StaticApi staticapi = new StaticApi(new ApiCache()); MasteryData data = staticapi.GetMasteries(region.tr, language.tr_TR); Assert.IsTrue(data.Data.Count > 0); }
protected Mastery(MasteryData data, ItemModifier modifier) { Id = data.Id; Name = I18N.Instance.Get(data.NameKey); Description = I18N.Instance.Get(data.DescriptionKey); this.modifier = modifier; this.Data = data; }
/// <summary> /// Get a list of all masteries asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>An MasteryListStatic object containing all masteries.</returns> public async Task <MasteryListStatic> GetMasteriesAsync(Region region , MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = Cache.Get <MasteryListStaticWrapper>(MasteriesCacheKey); if (wrapper == null || language != wrapper.Language || masteryData != wrapper.MasteryData) { var json = await requester.CreateRequestAsync(string.Format(MasteryRootUrl, region.ToString()) , new List <string>() { string.Format("locale={0}", language.ToString()) , masteryData == MasteryData.none ? string.Empty : string.Format("masteryListData={0}", masteryData.ToString()) }); var masteries = await JsonConvert.DeserializeObjectAsync <MasteryListStatic>(json); wrapper = new MasteryListStaticWrapper(masteries, language, masteryData); Cache.Add <MasteryListStaticWrapper>(MasteriesCacheKey, wrapper); } return(wrapper.MasteryListStatic); }
/// <summary> /// Get a mastery synchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryId">Id of the mastery to retrieve.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of th data to be retrieved.</param> /// <returns>A mastery.</returns> public MasteryStatic GetMastery(Region region, int masteryId, MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = Cache.Get <MasteryStaticWrapper>(MasteryCacheKey + masteryId); if (wrapper != null && wrapper.Language == language && wrapper.MasteryData == masteryData) { return(wrapper.MasteryStatic); } else { var listWrapper = Cache.Get <MasteryListStaticWrapper>(MasteriesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.MasteryData == masteryData) { if (listWrapper.MasteryListStatic.Masteries.ContainsKey(masteryId)) { return(listWrapper.MasteryListStatic.Masteries[masteryId]); } else { return(null); } } else { var json = requester.CreateRequest( string.Format(MasteryRootUrl, region.ToString()) + string.Format(IdUrl, masteryId), RootDomain, new List <string> { string.Format("locale={0}", language.ToString()), masteryData == MasteryData.none ? string.Empty : string.Format("masteryData={0}", masteryData.ToString()) }); var mastery = JsonConvert.DeserializeObject <MasteryStatic>(json); Cache.Add(MasteryCacheKey + masteryId , new MasteryStaticWrapper(mastery, language, masteryData)); return(mastery); } } }
/// <summary> /// Get a list of all masteries synchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>An MasteryListStatic object containing all masteries.</returns> public MasteryListStatic GetMasteries(Region region, MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = cache.Get <string, MasteryListStaticWrapper>(MasteriesCacheKey); if (wrapper == null || language != wrapper.Language || masteryData != wrapper.MasteryData) { var json = requester.CreateGetRequest( string.Format(MasteryRootUrl, region.ToString()), RootDomain, new List <string> { string.Format("locale={0}", language.ToString()), masteryData == MasteryData.none ? string.Empty : string.Format("masteryListData={0}", masteryData.ToString()) }); var masteries = JsonConvert.DeserializeObject <MasteryListStatic>(json); wrapper = new MasteryListStaticWrapper(masteries, language, masteryData); cache.Add(MasteriesCacheKey, wrapper, DefaultSlidingExpiry); } return(wrapper.MasteryListStatic); }
public async Task <MasteryListStatic> GetMasteriesAsync(Region region, MasteryData masteryData = MasteryData.All, Language language = Language.en_US) { var wrapper = cache.Get <string, MasteryListStaticWrapper>(MasteriesCacheKey); if (wrapper != null && language == wrapper.Language && masteryData == wrapper.MasteryData) { return(wrapper.MasteryListStatic); } var json = await requester.CreateGetRequestAsync(StaticDataRootUrl + MasteriesUrl, region, new List <string> { $"locale={language}", masteryData == MasteryData.Basic ? string.Empty : string.Format(TagsParameter, masteryData.ToString().ToLower()) }).ConfigureAwait(false); var masteries = JsonConvert.DeserializeObject <MasteryListStatic>(json); wrapper = new MasteryListStaticWrapper(masteries, language, masteryData); cache.Add(MasteriesCacheKey, wrapper, SlidingExpirationTime); return(wrapper.MasteryListStatic); }
public WeaponMastery(MasteryData data, ItemModifier modifier) : base(data, modifier) { }
public MasteryStaticWrapper(MasteryStatic mastery, Language language, MasteryData masteryData) { MasteryStatic = mastery; Language = language; MasteryData = masteryData; }
public MasteryListStaticWrapper(MasteryListStatic masteries, Language language, MasteryData masteryData) { MasteryListStatic = masteries; Language = language; MasteryData = masteryData; }
public HealingMastery(MasteryData data, ItemModifier modifier) : base(data, modifier) { }
/// <summary> /// Get a list of all masteries synchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>An MasteryListStatic object containing all masteries.</returns> public MasteryListStatic GetMasteries(Region region, MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = cache.Get<string, MasteryListStaticWrapper>(MasteriesCacheKey); if (wrapper == null || language != wrapper.Language || masteryData != wrapper.MasteryData) { var json = requester.CreateGetRequest( string.Format(MasteryRootUrl, region.ToString()), RootDomain, new List<string> { string.Format("locale={0}", language.ToString()), masteryData == MasteryData.none ? string.Empty : string.Format("masteryListData={0}", masteryData.ToString()) }); var masteries = JsonConvert.DeserializeObject<MasteryListStatic>(json); wrapper = new MasteryListStaticWrapper(masteries, language, masteryData); cache.Add(MasteriesCacheKey, wrapper, DefaultSlidingExpiry); } return wrapper.MasteryListStatic; }
public SummoningMastery(MasteryData data, ItemModifier modifier) : base(data, modifier) { }
/// <summary> /// Get a list of all masteries asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>An MasteryListStatic object containing all masteries.</returns> public async Task<MasteryListStatic> GetMasteriesAsync(Region region, MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = cache.Get<string, MasteryListStaticWrapper>(MasteriesCacheKey); if (wrapper != null && language == wrapper.Language && masteryData == wrapper.MasteryData) { return wrapper.MasteryListStatic; } var json = await requester.CreateGetRequestAsync( string.Format(MasteryRootUrl, region.ToString()), RootDomain, new List<string> { string.Format("locale={0}", language.ToString()), masteryData == MasteryData.none ? string.Empty : string.Format("masteryListData={0}", masteryData.ToString()) }); var masteries = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<MasteryListStatic>(json)); wrapper = new MasteryListStaticWrapper(masteries, language, masteryData); cache.Add(MasteriesCacheKey, wrapper, DefaultSlidingExpiry); return wrapper.MasteryListStatic; }
/// <summary> /// Get a list of all masteries asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>An MasteryListStatic object containing all masteries.</returns> public async Task<MasteryListStatic> GetMasteriesAsync(Region region , MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = Cache.Get<MasteryListStaticWrapper>(MasteriesCacheKey); if (wrapper == null || language != wrapper.Language || masteryData != wrapper.MasteryData) { var json = await requester.CreateRequestAsync(string.Format(MasteryRootUrl, region.ToString()) , new List<string>() { string.Format("locale={0}", language.ToString()) , masteryData == MasteryData.none ? string.Empty : string.Format("masteryListData={0}", masteryData.ToString()) }); var masteries = await JsonConvert.DeserializeObjectAsync<MasteryListStatic>(json); wrapper = new MasteryListStaticWrapper(masteries, language, masteryData); Cache.Add<MasteryListStaticWrapper>(MasteriesCacheKey, wrapper); } return wrapper.MasteryListStatic; }
public MagicMastery(MasteryData data, ItemModifier modifier) : base(data, modifier) { }
/// <summary> /// Get a mastery asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryId">Id of the mastery to retrieve.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of th data to be retrieved.</param> /// <returns>A mastery.</returns> public async Task<MasteryStatic> GetMasteryAsync(Region region, int masteryId , MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = Cache.Get<MasteryStaticWrapper>(MasteryCacheKey + masteryId); if (wrapper != null && wrapper.Language == language && wrapper.MasteryData == masteryData) { return wrapper.MasteryStatic; } else { var listWrapper = Cache.Get<MasteryListStaticWrapper>(MasteriesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.MasteryData == masteryData) { if (listWrapper.MasteryListStatic.Masteries.ContainsKey(masteryId)) { return listWrapper.MasteryListStatic.Masteries[masteryId]; } else { return null; } } else { var json = await requester.CreateRequestAsync(string.Format(MasteryRootUrl, region.ToString()) + string.Format(IdUrl, masteryId.ToString()) , new List<string>() { string.Format("locale={0}", language.ToString()) , masteryData == MasteryData.none ? string.Empty : string.Format("masteryData={0}", masteryData.ToString()) }); var mastery = await JsonConvert.DeserializeObjectAsync<MasteryStatic>(json); Cache.Add<MasteryStaticWrapper>(MasteryCacheKey + masteryId , new MasteryStaticWrapper(mastery, language, masteryData)); return mastery; } } }
/// <summary> /// Get a mastery asynchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="masteryId">Id of the mastery to retrieve.</param> /// <param name="masteryData">Data to retrieve.</param> /// <param name="language">Language of th data to be retrieved.</param> /// <returns>A mastery.</returns> public async Task<MasteryStatic> GetMasteryAsync(Region region, int masteryId, MasteryData masteryData = MasteryData.none, Language language = Language.en_US) { var wrapper = cache.Get<string, MasteryStaticWrapper>(MasteryCacheKey + masteryId); if (wrapper != null && wrapper.Language == language && wrapper.MasteryData == masteryData) { return wrapper.MasteryStatic; } var listWrapper = cache.Get<string, MasteryListStaticWrapper>(MasteriesCacheKey); if (listWrapper != null && listWrapper.Language == language && listWrapper.MasteryData == masteryData) { return listWrapper.MasteryListStatic.Masteries.ContainsKey(masteryId) ? listWrapper.MasteryListStatic.Masteries[masteryId] : null; } var json = await requester.CreateGetRequestAsync( string.Format(MasteryRootUrl, region.ToString()) + string.Format(IdUrl, masteryId.ToString()), RootDomain, new List<string> { string.Format("locale={0}", language.ToString()), masteryData == MasteryData.none ? string.Empty : string.Format("masteryData={0}", masteryData.ToString()) }); var mastery = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<MasteryStatic>(json)); cache.Add(MasteryCacheKey + masteryId, new MasteryStaticWrapper(mastery, language, masteryData), DefaultSlidingExpiry); return mastery; }