示例#1
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 <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        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);
        }
示例#6
0
        /// <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);
                }
            }
        }
示例#7
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 <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);
        }
示例#8
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);
        }
示例#9
0
 /// <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;
         }
     }
 }
示例#10
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<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;
 }
示例#11
0
 /// <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;
 }
示例#12
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;
 }
示例#13
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;
 }