Esempio n. 1
0
        private async Task <List <Champions.Champion> > GetChampionsFromIDAsync(string region, long[] ids)
        {
            List <Champions.Champion> listOfChamps = new List <Champions.Champion>();
            var ddjson = await DataDragon.GetDDVersionAsync(region);

            if (ddjson == "invalidregion".ToLower())
            {
                return(null);
            }
            else
            {
                DataDragon.Realms DataDragonRegion = JsonConvert.DeserializeObject <DataDragon.Realms>(ddjson);
                Uri url      = new Uri($"http://ddragon.leagueoflegends.com/cdn/{DataDragonRegion.n.champion}/data/en_US/champion.json");
                var jsonData = await webClient.GetStringAsync(url);

                var json = JsonConvert.DeserializeObject <Champions.RootChampions>(jsonData);

                for (int i = 0; i < ids.Length; ++i)
                {
                    foreach (var champion in json.Data)
                    {
                        if (champion.Value.key == ids[i].ToString())
                        {
                            listOfChamps.Add(champion.Value);
                            break;
                        }
                    }
                }
                return(listOfChamps);
            }
        }
Esempio n. 2
0
        public void DDVersionAsync_ReturnsInvalidRegion()
        {
            var dd = new DataDragon();

            var result = dd.GetDDVersionAsync("hi").GetAwaiter().GetResult();

            Assert.AreEqual("invalidregion", result);
        }
Esempio n. 3
0
        public void DDVersionAsync_ReturnsVersion()
        {
            // Arrange
            var        dd     = new DataDragon();
            Uri        url    = new Uri($"https://ddragon.leagueoflegends.com/realms/euw.json");
            HttpClient client = new HttpClient();

            //Act
            var jsondata = client.GetStringAsync(url).GetAwaiter().GetResult();
            var result   = dd.GetDDVersionAsync("euw").GetAwaiter().GetResult();

            //Assert
            Assert.AreEqual(jsondata, result);
        }
Esempio n. 4
0
        public async Task LSummoner(CommandContext ctx, string region, [RemainingText] string name)
        {
            var ddjson = await DataDragon.GetDDVersionAsync(region);

            if (ddjson == "invalidregion".ToLower())
            {
                await ctx.RespondAsync("Invalid Region");
            }
            else
            {
                RiotApi riotApi = RiotApi.NewInstance(GetAPIKey().LeagueAPI);
                try
                {
                    Region            platform         = GetRegion(region);
                    DataDragon.Realms DataDragonRegion = JsonConvert.DeserializeObject <DataDragon.Realms>(ddjson);
                    var summoner = await riotApi.SummonerV4.GetBySummonerNameAsync(platform, name);

                    LeagueEntry[] Entries = await riotApi.LeagueV4.GetLeagueEntriesForSummonerAsync(platform, summoner.Id);

                    string ranks = string.Empty;
                    for (int i = 0; i < Entries.Length; ++i)
                    {
                        ranks = ranks + $"**{Entries[i].QueueType}:** {Entries[i].Tier} {Entries[i].Rank}\n";
                    }
                    var embed0 = new DiscordEmbedBuilder()
                    {
                        Title        = $"Summoner: {summoner.Name}",
                        Description  = $"**Level:** {summoner.SummonerLevel}\n{ranks}",
                        ThumbnailUrl = $"http://ddragon.leagueoflegends.com/cdn/{DataDragonRegion.n.profileicon}/img/profileicon/{summoner.ProfileIconId}.png"
                    };
                    await ctx.RespondAsync(embed : embed0.Build());
                }
                catch (RiotResponseException ex)
                {
                    await ctx.RespondAsync(ex.Message);
                }
                catch (Exception)
                {
                    await ctx.RespondAsync("Couldn't find the summoner in the region.");
                }
            }
        }
Esempio n. 5
0
        public async Task LGame(CommandContext ctx, string region, [RemainingText] string name)
        {
            var ddjson = await DataDragon.GetDDVersionAsync(region);

            if (ddjson == "invalidregion".ToLower())
            {
                await ctx.RespondAsync("Invalid Region");
            }
            else
            {
                RiotApi riotApi = RiotApi.NewInstance(GetAPIKey().LeagueAPI);
                try
                {
                    Region            platform         = GetRegion(region);
                    DataDragon.Realms DataDragonRegion = JsonConvert.DeserializeObject <DataDragon.Realms>((ddjson));
                    var summoner = await riotApi.SummonerV4.GetBySummonerNameAsync(platform, name);

                    var spectators = await riotApi.SpectatorV4.GetCurrentGameInfoBySummonerAsync(platform, summoner.Id);

                    int      playerCount = spectators.Participants.Length;
                    string   redTeam     = string.Empty;
                    string   blueTeam    = string.Empty;
                    long[]   championIds = new long[playerCount];
                    string[] rank        = new string[playerCount];
                    string   profileIcon = string.Empty;
                    List <Champions.Champion> champions = new List <Champions.Champion>();

                    rank = await GetSummonerRanksAsync(riotApi, platform, spectators);

                    championIds = GetChampionIDsFromCurrentGame(spectators);

                    champions = await GetChampionsFromIDAsync(region, championIds);

                    redTeam = PrintRedTeam(spectators, champions, rank);

                    blueTeam = PrintBlueTeam(spectators, champions, rank);

                    profileIcon = GetProfileIcon(spectators, DataDragonRegion.n.champion, champions, name);

                    var embed = new DiscordEmbedBuilder()
                    {
                        Title        = $"Game for: {summoner.Name}",
                        ThumbnailUrl = profileIcon
                    };

                    embed.AddField("Blue Team", blueTeam, true);
                    embed.AddField("Red Team", redTeam, true);

                    await ctx.RespondAsync(embed : embed.Build());
                }
                catch (RiotResponseException ex)
                {
                    await ctx.RespondAsync(ex.Message);
                }
                catch (NullReferenceException)
                {
                    await ctx.RespondAsync("Couldn't find the summoner or the summoner isn't in game yet.");
                }
                catch (Exception ex)
                {
                    await ctx.RespondAsync(ex.Message);
                }
            }
        }