コード例 #1
0
        public async Task <string> GetWinRatio(string playerName, string region)
        {
            var playerId = await FetchPlayerId(playerName, region);

            var riotApiAddress = RegionalEndpoint.ServerNameToUrl(region);
            var result         = await riotApiAddress
                                 .AppendPathSegments("lol", "league", "v4", "entries", "by-summoner", playerId)
                                 .SetQueryParam("api_key", riotApiKey)
                                 .GetAsync()
                                 .ReceiveJson <LeagueEntryDTO[]>();

            if (result.Length == 0)
            {
                return("Player got no division on any queue");
            }

            string winRates = "";

            foreach (var leagueEntry in result)
            {
                var winRatio = 100 * leagueEntry.Wins / (leagueEntry.Wins + leagueEntry.Losses);
                if (leagueEntry.QueueType == "RANKED_SOLO_5x5")
                {
                    winRates += $"Solo Win Ratio: {winRatio}%";
                }
                else if (leagueEntry.QueueType == "RANKED_FLEX_SR")
                {
                    winRates += $"Flex Summoner's Rift Win Ratio: {winRatio}%";
                }

                winRates += "\r\n";
            }

            return(winRates);
        }
コード例 #2
0
        public async Task <string> FetchPlayerId(string playerName, string region)
        {
            var address = RegionalEndpoint.ServerNameToUrl(region);

            var result = await address.AppendPathSegments("lol", "summoner", "v4", "summoners", "by-name", playerName)
                         .AllowHttpStatus(HttpStatusCode.NotFound)
                         .SetQueryParam("api_key", riotApiKey)
                         .GetAsync()
                         .ReceiveJson <SummonerDTO>();

            if (result.Id == null)
            {
                throw new PlayerNotFoundException();
            }

            return(result.Id);
        }
コード例 #3
0
        public async Task <string> GetDivisions(string playerName, string region)
        {
            var playerId = await FetchPlayerId(playerName, region);

            var riotApiAddress = RegionalEndpoint.ServerNameToUrl(region);
            var result         = await riotApiAddress.AppendPathSegments("lol", "league", "v4", "entries", "by-summoner", playerId)
                                 .SetQueryParam("api_key", riotApiKey)
                                 .GetAsync()
                                 .ReceiveJson <LeagueEntryDTO[]>();

            string divisions = "";

            if (result.Count() < 1)
            {
                return("Player got no division on any queue");
            }

            foreach (var leagueEntry in result)
            {
                if (leagueEntry.QueueType == "RANKED_SOLO_5x5")
                {
                    divisions += $"Solo Division: {leagueEntry.Tier} {leagueEntry.Rank} ({leagueEntry.LeaguePoints} LP)";
                }

                else if (leagueEntry.QueueType == "RANKED_FLEX_SR")
                {
                    divisions += $"Flex Summoner's Rift Division: {leagueEntry.Tier} {leagueEntry.Rank} ({leagueEntry.LeaguePoints} LP)";
                }

                if (leagueEntry.MiniSeries != null)
                {
                    divisions = $"Series: {leagueEntry.MiniSeries.Progress.Replace('W', '✓').Replace('N', '-').Replace('L', 'X')}";
                }

                divisions += "\r\n";
            }

            return(divisions);
        }
コード例 #4
0
        public async Task <string> GetMastery(string playerName, string region, string championName)
        {
            var playerId = await FetchPlayerId(playerName, region);

            var champions = await returnChampionList();

            var champion = champions.SingleOrDefault(n => string.Equals(n.Name.ToLower(), championName.ToLower()));

            if (champion == null)
            {
                throw new ChampionNotFoundException();
            }

            var riotApiAddress = RegionalEndpoint.ServerNameToUrl(region);
            var result         = await riotApiAddress
                                 .AllowHttpStatus(HttpStatusCode.NotFound)
                                 .AppendPathSegments("lol", "champion-mastery", "v4", "champion-masteries", "by-summoner", playerId, "by-champion", champion.Id)
                                 .SetQueryParam("api_key", riotApiKey)
                                 .GetAsync()
                                 .ReceiveJson <ChampionMasteryDTO>();

            return($"Champion level {result.ChampionLevel} with {champion.Name} ({result.ChampionPoints ?? "0"} points)");
        }