Пример #1
0
        public async Task <Guild> GetGuildData(int allyCode)
        {
            string functionName = "GetGuildRepo";
            string key          = allyCode.ToString();
            var    objCache     = _cacheClient.GetDataFromRepositoryCache(functionName, key);

            if (objCache != null)
            {
                var guild = (Guild)objCache;
                guild.LoadedFromCache = true;
                return(guild);
            }

            var guildRepo   = new SWGoHHelpGuildRepository(_settings.SWGoHHelpSettings, _cacheClient, _mapper);
            var guildResult = await guildRepo.GetGuild(allyCode);

            //load to cache
            try
            {
                var b = await _cacheClient.AddToRepositoryCache(functionName, key, guildResult, _settings.CachingSettings.RepositoryCachingInMinutes);
            }
            catch (Exception ex)
            {
            }

            return(guildResult);
        }
Пример #2
0
        public async Task <Player> GetPlayerData(int allyCode)
        {
            string functionName = "GetPlayerRepo";
            string key          = allyCode.ToString();
            var    objCache     = _cacheClient.GetDataFromRepositoryCache(functionName, key);

            if (objCache != null)
            {
                var player = (Player)objCache;
                player.LoadedFromCache = true;
                return(player);
            }

            var playerRepo   = new SWGoHHelpPlayerRepository(_settings.SWGoHHelpSettings, _cacheClient, _mapper);
            var playerResult = await playerRepo.GetPlayer(allyCode);

            //load to cache
            try
            {
                var b = await _cacheClient.AddToRepositoryCache(functionName, key, playerResult, _settings.CachingSettings.RepositoryCachingInMinutes);
            }
            catch (Exception ex)
            {
            }

            return(playerResult);
        }
Пример #3
0
        public async Task <Player> GetPlayer(string userName)
        {
            await Task.FromResult(1);

            string functionName = "GetPlayerRepo";
            string key          = userName;
            var    objCache     = cacheClient.GetDataFromRepositoryCache(functionName, key);

            if (objCache != null)
            {
                var player = (Player)objCache;
                player.LoadedFromCache = true;
                return(player);
            }

            var queryData = string.Concat("{\"PlayerName\":\"", userName, "\"}");
            var orderby   = "{\"LastSwGohUpdated\":-1}";
            var limit     = "1";

            string url = BuildApiUrl("Player", queryData, orderby, limit, null);

            try
            {
                using (var client = new HttpClient())
                {
                    var response = await client.GetStringAsync(url);

                    List <PlayerDto> ret = JsonConvert.DeserializeObject <List <PlayerDto> >(response, JSonConverterSettings.Settings);

                    var players = _Mapper.Map <List <Player> >(ret);
                    if (players == null || players.Count == 0)
                    {
                        return(players.FirstOrDefault());
                    }
                    //load to cache
                    await cacheClient.AddToRepositoryCache(functionName, key, players.FirstOrDefault());

                    return(players.FirstOrDefault());
                }
            }
            catch (Exception ex)
            {
                throw new ApplicationException(ex.Message);
            }
        }
Пример #4
0
        public async Task <List <GuildUnit> > GetGuildUnits(int guildId)
        {
            string functionName = "GetGuildUnitsRepo";
            string key          = guildId.ToString();
            var    objCache     = cacheClient.GetDataFromRepositoryCache(functionName, key);

            if (objCache != null)
            {
                var _guildCharacters = (List <GuildUnit>)objCache;
                _guildCharacters.ForEach(p => p.LoadedFromCache = true);
                return(_guildCharacters);
            }

            var configCharacters = await IResolver.Current.CharacterSettings.GetCharactersConfig();

            var configShips = await IResolver.Current.ShipSettings.GetShipConfig();

            var url = string.Format("https://swgoh.gg/api/guilds/{0}/units/", guildId.ToString());
            List <GuildUnitDto> chars = new List <GuildUnitDto>();

            using (var client = new HttpClient())
            {
                HttpResponseMessage response = await client.GetAsync(url);

                HttpContent content   = response.Content;
                string      reqResult = await content.ReadAsStringAsync();

                JObject json = new JObject();
                try
                {
                    json = JObject.Parse(reqResult);
                }
                catch (Exception ex)
                {
                    //swallow the error
                    return(null);
                }

                foreach (var row in json)
                {
                    var unitName = row.Key;
                    if (configCharacters.Where(p => p.Command?.ToLower() == row.Key.ToLower()) != null && configCharacters.Where(p => p.Command?.ToLower() == row.Key.ToLower()).Count() > 0)
                    {
                        unitName = configCharacters.Where(p => p.Command?.ToLower() == row.Key.ToLower()).FirstOrDefault().Name;
                    }
                    else if (configShips.Where(p => p.Command?.ToLower() == row.Key.ToLower()) != null && configShips.Where(p => p.Command?.ToLower() == row.Key.ToLower()).Count() > 0)
                    {
                        unitName = configShips.Where(p => p.Command?.ToLower() == row.Key.ToLower()).FirstOrDefault().Name;
                    }

                    GuildUnitDto gc = new GuildUnitDto
                    {
                        Name = unitName
                    };

                    List <GuildPlayerUnitDto> players = new List <GuildPlayerUnitDto>();
                    foreach (var player in row.Value)
                    {
                        players.Add(new GuildPlayerUnitDto {
                            Name = player["player"].ToString(), Level = (int)player["level"], Power = (int)player["power"], Rarity = (int)player["rarity"], Combat_Type = (int)player["combat_type"]
                        });
                        gc.Players = players;
                    }
                    chars.Add(gc);
                }
            }
            List <GuildUnit> guildCharacters = _Mapper.Map <List <GuildUnit> >(chars);

            await cacheClient.AddToRepositoryCache(functionName, key, guildCharacters, 30);

            return(guildCharacters);
        }
Пример #5
0
        public async Task <string> GetToken()
        {
            var    token        = "";
            string functionName = "SWGoHHelp";
            string key          = "token";
            var    objCache     = _cacheClient.GetDataFromRepositoryCache(functionName, key);

            if (objCache != null)
            {
                token = (string)objCache;
                return(token);
            }

            string protocol = string.IsNullOrEmpty(_protocol) ? "https" : _protocol;
            string host     = string.IsNullOrEmpty(_host) ? "api.swgoh.help" : _host;
            string port     = string.IsNullOrEmpty(_port) ? "" : _port;

            var url    = protocol + "://" + host + port;
            var signIn = url + "/auth/signin/";

            var user = "******" + _settings.UserName;

            user += "&password="******"&grant_type=password";
            user += "&client_id=" + _client_id;
            user += "&client_secret=" + _client_secret;

            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(signIn);
                request.Method      = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                byte[] byteArray = Encoding.UTF8.GetBytes(user);
                request.ContentLength = byteArray.Length;

                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
                WebResponse response = request.GetResponse();
                //Console.WriteLine(((HttpWebResponse)response).StatusDescription);
                dataStream = response.GetResponseStream();
                StreamReader reader        = new StreamReader(dataStream);
                var          loginresponse = reader.ReadToEnd();
                reader.Close();
                dataStream.Close();
                response.Close();

                var loginResponseObject = JsonConvert.DeserializeObject <LoginResponse>(loginresponse);
                token = loginResponseObject.access_token;

                //load to cache
                try
                {
                    var b = await _cacheClient.AddToRepositoryCache(functionName, key, token, _settings.TokenCachingInMinutes);
                }
                catch (Exception ex)
                {
                }

                return(token);
            }
            catch (Exception e)
            {
                throw e;
            }
        }