C# Riot API Library. Thread safe, automatic retries, autogenerated nightly releases.
Switch branches/tags
Nothing to show
Clone or download

README.md

Camille

AppVeyor branch NuGet Stable NuGet Pre Release

C# Library for the Riot Games API

Camille's goals are speed and reliability. Camille handles rate limits and large requests seamlessly. Data classes are automatically generated from the Riot API Reference (Swagger).

Features

  • Fast, asynchronous, thread-safe
  • Automatically retries failed requests
  • Highly-configurable
  • Targets .NET Standard 1.1+ (.NET Core 1.0+, .NET Framework 4.5+)

Installation

Install via NuGet (MingweiSamuel.Camille).

Usage

All API interactions are done using a RiotApi instance. RiotApi.NewInstance takes either just an API key (for default settings) or a IRiotApiConfig instance (for custom settings).

var riotApi = RiotApi.NewInstance("RGAPI-12345678-abcd-1234-abcd-123456abcdef");
var riotApi = RiotApi.NewInstance(
    new RiotApiConfig.Builder("RGAPI-12345678-abcd-1234-abcd-123456abcdef")
    {
        MaxConcurrentRequests = 200,
        Retries = 10,
        // ...
    }.Build()
);

API methods are divided up into respective endpoints, corresponding to the left bar of the API reference.

Examples

Print Summoner's Top Champions

// Get champion static data (for champion names).
// Note the LolStaticData endpoints have very low rate limits (10/hr).
var champs = riotApi.LolStaticData.GetChampionList(Region.NA, dataById: true).Data;

// Get summoners by name synchronously. (using async is faster).
var summoners = new[]
{
    riotApi.Summoner.GetBySummonerName(Region.NA, "c9 sneaky"),
    riotApi.Summoner.GetBySummonerName(Region.NA, "double LIFT")
};

foreach (var summoner in summoners)
{
    Console.WriteLine($"{summoner.Name}'s Top 10 Champs:");

    var masteries =
        riotApi.ChampionMastery.GetAllChampionMasteries(Region.NA, summoner.Id);

    for (var i = 0; i < 10; i++)
    {
        var mastery = masteries[i];
        // Get champion for this mastery.
        var champ = champs[mastery.ChampionId.ToString()];
        // print i, champ name, champ mastery points, and champ level
        Console.WriteLine("{0,3}) {1,-16} {2,7} ({3})", i + 1, champ.Name,
            mastery.ChampionPoints, mastery.ChampionLevel);
    }
    Console.WriteLine();
}

Output (2017-01-18):

C9 Sneaky's Top 10 Champs:
  1) Jhin             268,866 (7)
  2) Lucian           195,541 (7)
  3) Ezreal           146,950 (7)
  4) Ashe             144,269 (7)
  5) Caitlyn          139,390 (7)
  6) Sivir             84,331 (7)
  7) Twitch            82,702 (7)
  8) Vayne             80,733 (7)
  9) Tristana          75,150 (6)
 10) Miss Fortune      70,757 (7)

Doublelift's Top 10 Champs:
  1) Jhin             126,291 (7)
  2) Caitlyn           97,410 (7)
  3) Vayne             79,420 (7)
  4) Lucian            77,254 (7)
  5) Kalista           43,572 (5)
  6) Ashe              36,408 (7)
  7) Ezreal            35,754 (6)
  8) Twitch            33,169 (6)
  9) Kog'Maw           22,459 (5)
 10) Tristana          20,582 (4)