using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
public static void Main()
Console.WriteLine("Hello World");
public class RiotAPiServices {
private enum typeRequest { SUMMONER, LEAGUE, MATCH_HISTORY, RANKED_STATS, REALM, CHAMPIONS, SUMMONER_SPELLS };
private const string apiKey = "????????-????-????-????-????????????";
public async Task<Summoner> GetSummoner(string name, string region)
Summoner summoner = new Summoner();
var objectRankedStats = await ExecuteRankedStatsRequest(summoner, region);
summoner = SetSummonerStatistics(summoner, objectRankedStats);
private Summoner SetSummonerStatistics(Summoner summoner, JToken objectRankedStats)
var informations = from stat in objectRankedStats where (int)stat["id"] == 0 select stat;
summoner.Stats.Pentakill = (int)informations["stats"]["totalPentaKills"];
summoner.Stats.Quadrakill = (int)informations["stats"]["totalQuadraKills"];
summoner.Stats.Triple = (int)informations["stats"]["totalTripleKills"];
private async Task<JToken> ExecuteRankedStatsRequest(Summoner summoner, string region)
string request = CreateRequest(typeRequest.RANKED_STATS, region, new string[] { summoner.ID.ToString(), "4" });
var output = await GetAPIResponse(request, typeRequest.RANKED_STATS);
var objectRankedStats = JObject.Parse(output)["champions"];
return objectRankedStats;
private string CreateRequest(typeRequest type, string region, string[] parameters)
string request = "https://" + region + ".api.pvp.net/api/lol/" + region + "/";
char symbolBeforeApi = '?';
if (parameters.Length > 1)
case typeRequest.SUMMONER:
request += "v1.4/summoner/by-name/" + parameters[0];
request += "v2.5/league/by-summoner/" + parameters[0];
case typeRequest.MATCH_HISTORY:
request += "v1.3/game/by-summoner/" + parameters[0] + "/recent";
case typeRequest.RANKED_STATS:
request += "v1.3/stats/by-summoner/" + parameters[0] + "/ranked?season=SEASON" + parameters[1];
request = "https://" + parameters[0] + ".api.pvp.net/api/lol/static-data/" + region + "/v1.2/realm";
case typeRequest.CHAMPIONS:
request = "https://" + parameters[0] + ".api.pvp.net/api/lol/static-data/" + region + "/v1.2/champion";
case typeRequest.SUMMONER_SPELLS:
request = "https://" + parameters[0] + ".api.pvp.net/api/lol/static-data/" + region + "/v1.2/summoner-spell";
default: return "ERROR_TYPE";
request += symbolBeforeApi + "api_key=" + apiKey;
private async Task<string> GetAPIResponse(string request, typeRequest type)
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(request);
webRequest.Method = "GET";
HttpStatusCode code = HttpStatusCode.OK;
using (HttpWebResponse response = (HttpWebResponse)await webRequest.GetResponseAsync())
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
content = await sr.ReadToEndAsync();
code = response.StatusCode;
using (HttpWebResponse response = (HttpWebResponse)ex.Response)
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
content = sr.ReadToEnd();
code = response.StatusCode;
throw new RequestRiotAPIException(code);
public String Name { get; set; }
public int IdIcon { get; set; }
public int ChampionId { get; set; }
public int Level { get; set; }
public int Victories { get; set; }
public int Defeats { get; set; }
public int ID { get; set; }
public Stats Stats { get; set; }
public int Pentakill { get; set; }
public int Quadrakill { get; set; }
public int Triple { get; set; }
public int Double { get; set; }
public int KillingSpree { get; set; }
public int LargestKillingSpree { get; set; }
public int ChampionsSlain { get; set; }
public int Deaths { get; set; }
public int Assists { get; set; }
public int MostKills { get; set; }
public int MostDeaths { get; set; }
public int DamageDealt { get; set; }
public int PhysicalDamageDealt { get; set; }
public int MagicDamageDealt { get; set; }
public int Healing { get; set; }
public int MinionsSlain { get; set; }
public int TurretsDestroyed { get; set; }
public int LongestGame { get; set; }
public int LongestTimeAlive { get; set; }
public int MonstersSlain { get; set; }
public int NbGamesPlayed { get; set; }