/// <inheritdoc /> public async Task <ItemListStatic> GetAllAsync(string version, Language language = Language.en_US) { var cacheKey = ItemsCacheKey + language + version; var wrapper = cache.Get <string, ItemListStaticWrapper>(cacheKey); if (wrapper != null && language == wrapper.Language && version == wrapper.Version) { return(wrapper.ItemListStatic); } var json = await requester.CreateGetRequestAsync(Host, CreateUrl(version, language, ItemsDataKey)).ConfigureAwait(false); var items = JsonConvert.DeserializeObject <ItemListStatic>(json); wrapper = new ItemListStaticWrapper(items, language, version); cache.Add(cacheKey, wrapper, SlidingExpirationTime); return(wrapper.ItemListStatic); }
public async Task <ItemListStatic> GetItemsAsync(Region region, ItemData itemData = ItemData.All, Language language = Language.en_US) { var wrapper = cache.Get <string, ItemListStaticWrapper>(ItemsCacheKey); if (wrapper != null && language == wrapper.Language && itemData == wrapper.ItemData) { return(wrapper.ItemListStatic); } var json = await requester.CreateGetRequestAsync(StaticDataRootUrl + ItemsUrl, region, new List <string> { $"locale={language}", itemData == ItemData.Basic ? string.Empty : string.Format(TagsParameter, itemData.ToString().ToLower()) }).ConfigureAwait(false); var items = JsonConvert.DeserializeObject <ItemListStatic>(json); wrapper = new ItemListStaticWrapper(items, language, itemData); cache.Add(ItemsCacheKey, wrapper, SlidingExpirationTime); return(wrapper.ItemListStatic); }
/// <summary> /// Get a list of all items synchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="itemData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>An ItemListStatic object containing all items.</returns> public async Task<ItemListStatic> GetItemsAsync(Region region, ItemData itemData = ItemData.none, Language language = Language.en_US) { var wrapper = cache.Get<string, ItemListStaticWrapper>(ItemsCacheKey); if (wrapper != null && language == wrapper.Language && itemData == wrapper.ItemData) { return wrapper.ItemListStatic; } var json = await requester.CreateGetRequestAsync( string.Format(ItemRootUrl, region.ToString()), RootDomain, new List<string> { string.Format("locale={0}", language.ToString()), itemData == ItemData.none ? string.Empty : string.Format("itemListData={0}", itemData.ToString()) }); var items = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject<ItemListStatic>(json)); wrapper = new ItemListStaticWrapper(items, language, itemData); cache.Add(ItemsCacheKey, wrapper, DefaultSlidingExpiry); return wrapper.ItemListStatic; }
/// <summary> /// Get a list of all items synchronously. /// </summary> /// <param name="region">Region from which to retrieve the data.</param> /// <param name="itemData">Data to retrieve.</param> /// <param name="language">Language of the data to be retrieved.</param> /// <returns>An ItemListStatic object containing all items.</returns> public ItemListStatic GetItems(Region region, ItemData itemData = ItemData.none, Language language = Language.en_US) { var wrapper = cache.Get<string, ItemListStaticWrapper>(ItemsCacheKey); if (wrapper == null || language != wrapper.Language || itemData != wrapper.ItemData) { var json = requester.CreateGetRequest( string.Format(ItemRootUrl, region.ToString()), RootDomain, new List<string> { string.Format("locale={0}", language.ToString()), itemData == ItemData.none ? string.Empty : string.Format("itemListData={0}", itemData.ToString()) }); var items = JsonConvert.DeserializeObject<ItemListStatic>(json); wrapper = new ItemListStaticWrapper(items, language, itemData); cache.Add(ItemsCacheKey, wrapper, DefaultSlidingExpiry); } return wrapper.ItemListStatic; }