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); }
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); }
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); }
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)"); }