MingweiSamuel.Camille 2.4.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package MingweiSamuel.Camille --version 2.4.1
NuGet\Install-Package MingweiSamuel.Camille -Version 2.4.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MingweiSamuel.Camille" Version="2.4.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MingweiSamuel.Camille --version 2.4.1
#r "nuget: MingweiSamuel.Camille, 2.4.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MingweiSamuel.Camille as a Cake Addin
#addin nuget:?package=MingweiSamuel.Camille&version=2.4.1

// Install MingweiSamuel.Camille as a Cake Tool
#tool nuget:?package=MingweiSamuel.Camille&version=2.4.1

Camille

AppVeyor branch NuGet Stable NuGet Pre Release API Reference

C# Library for the Riot Games API

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

Features

  • Fast, asynchronous, thread-safe.
  • Automatically retries failed requests.
  • Automatic up-to-date nightlies, reflecting Riot API changes within 24 hours.
  • Multi-targeted: .NET Standard 1.1+, .NET Framework 4.5+, .NET Core 2.0, .NET Standard 2.1+, .NET Core 3.0+.
  • Highly-configurable.
  • New TFT API Supported!

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");
// OR
var riotApi = RiotApi.NewInstance(
    new RiotApiConfig.Builder("RGAPI-12345678-abcd-1234-abcd-123456abcdef")
    {
        MaxConcurrentRequests = 200,
        Retries = 10,
        // ...
    }.Build()
);

You can find all configuration options here.

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

Example

// Get summoners by name synchronously. (using async is faster).
var summoners = new[]
{
    riotApi.SummonerV4.GetBySummonerName(Region.NA, "jAnna kendrick"),
    riotApi.SummonerV4.GetBySummonerName(Region.NA, "lug nuts k")
};

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

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

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

Output (2019-02-06):

Janna Kendrick's Top 10 Champs:
  1) Ekko              1,280,476 (7)
  2) Master Yi            89,871 (7)
  3) Jinx                 59,238 (6)
  4) Yasuo                58,625 (7)
  5) Poppy                52,140 (7)
  6) Maokai               46,567 (6)
  7) Ezreal               44,604 (6)
  8) Lulu                 42,794 (6)
  9) Kennen               42,500 (7)
 10) Zilean               41,710 (6)

LugnutsK's Top 10 Champs:
  1) Zyra                548,939 (7)
  2) Soraka               73,675 (6)
  3) Morgana              59,828 (5)
  4) Sona                 50,001 (6)
  5) Nami                 44,775 (6)
  6) Brand                42,108 (5)
  7) Janna                41,923 (5)
  8) Taric                37,916 (6)
  9) Ekko                 35,837 (5)
 10) Poppy                31,457 (5)

This example takes advantage of C#'s async/await tasks to fetch 10 matches all at once.

var summonerNameQuery = "lugnutsk";

// Get summoners data (blocking).
var summonerData = await riotApi.SummonerV4.GetBySummonerNameAsync(Region.NA, summonerNameQuery);
if (null == summonerData)
{
   // If a summoner is not found, the response will be null.
   Console.WriteLine($"Summoner '{summonerNameQuery}' not found.");
   return;
}

Console.WriteLine($"Match history for {summonerData.Name}:");

// Get 10 most recent matches (blocking).
// Queue ID 420 is RANKED_SOLO_5v5 (TODO)
var matchlist = await riotApi.MatchV4.GetMatchlistAsync(
   Region.NA, summonerData.AccountId, queue: new[] { 420 }, endIndex: 10);
// Get match results (done asynchronously -> not blocking -> fast).
var matchDataTasks = matchlist.Matches.Select(
       matchMetadata => riotApi.MatchV4.GetMatchAsync(Region.NA, matchMetadata.GameId)
   ).ToArray();
// Wait for all task requests to complete asynchronously.
var matchDatas = await Task.WhenAll(matchDataTasks);

for (var i = 0; i < matchDatas.Count(); i++)
{
   var matchData = matchDatas[i];
   // Get this summoner's participant ID info.
   var participantIdData = matchData.ParticipantIdentities
       .First(pi => summonerData.Id.Equals(pi.Player.SummonerId));
   // Find the corresponding participant.
   var participant = matchData.Participants
       .First(p => p.ParticipantId == participantIdData.ParticipantId);

   var win = participant.Stats.Win;
   var champ = (Champion) participant.ChampionId;
   var k = participant.Stats.Kills;
   var d = participant.Stats.Deaths;
   var a = participant.Stats.Assists;
   var kda = (k + a) / (float) d;

   // Print #, win/loss, champion.
   Console.WriteLine("{0,3}) {1,-4} ({2})", i + 1, win ? "Win" : "Loss", champ.Name());
   // Print champion, K/D/A
   Console.WriteLine("     K/D/A {0}/{1}/{2} ({3:0.00})", k, d, a, kda);
}

Output (2019-02-19):

Match history for LugnutsK:
  1) Win  (Zyra)
     K/D/A 2/3/11 (4.33)
  2) Win  (Zyra)
     K/D/A 5/1/13 (18.00)
  3) Loss (Zyra)
     K/D/A 2/5/1 (0.60)
  4) Win  (Sona)
     K/D/A 1/13/23 (1.85)
  5) Win  (Zyra)
     K/D/A 3/1/5 (8.00)
  6) Win  (Zyra)
     K/D/A 6/3/16 (7.33)
  7) Win  (Zyra)
     K/D/A 2/4/7 (2.25)
  8) Loss (Zyra)
     K/D/A 1/10/8 (0.90)
  9) Loss (Zyra)
     K/D/A 0/11/5 (0.45)
 10) Win  (Zyra)
     K/D/A 4/5/15 (3.80)

API Reference

Automatically generated API Reference

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp1.0 was computed.  netcoreapp1.1 was computed.  netcoreapp2.0 is compatible.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 is compatible.  netcoreapp3.1 is compatible. 
.NET Standard netstandard1.1 is compatible.  netstandard1.2 was computed.  netstandard1.3 was computed.  netstandard1.4 was computed.  netstandard1.5 was computed.  netstandard1.6 was computed.  netstandard2.0 was computed.  netstandard2.1 is compatible. 
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen30 was computed.  tizen40 was computed.  tizen60 was computed. 
Universal Windows Platform uap was computed.  uap10.0 was computed. 
Windows Phone wpa81 was computed. 
Windows Store netcore was computed.  netcore45 was computed.  netcore451 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.9.1-nightly-2022-06-03-b5... 1,756 6/3/2022
2.9.1-nightly-2022-02-11-b5... 1,157 2/11/2022
2.9.1-nightly-2022-02-10-b5... 1,045 2/10/2022
2.9.1-nightly-2022-02-05-b5... 1,106 2/5/2022
2.9.1-nightly-2022-01-19-e5... 1,099 1/19/2022
2.9.1-nightly-2021-12-30-e5... 1,028 12/30/2021
2.9.1-nightly-2021-11-21-e5... 1,724 11/21/2021
2.9.1-nightly-2021-11-20-e5... 1,448 11/20/2021
2.9.1-nightly-2021-11-11-e5... 1,147 11/11/2021
2.9.1-nightly-2021-10-08-e5... 1,159 10/8/2021
2.9.1-nightly-2021-10-07-e5... 1,187 10/7/2021
2.9.1-nightly-2021-10-07-d1... 1,248 10/7/2021
2.8.1-nightly-2021-09-29-d1... 1,183 9/29/2021
2.8.1-nightly-2021-09-10-fc... 1,239 9/10/2021
2.8.1-nightly-2021-09-04-fc... 1,127 9/4/2021
2.8.1-nightly-2021-09-02-fc... 1,200 9/2/2021
2.8.1-nightly-2021-08-25-fc... 1,182 8/25/2021
2.8.1-nightly-2021-07-24-aa... 1,255 7/24/2021
2.8.1-nightly-2021-07-15-aa... 1,160 7/15/2021
2.8.1-nightly-2021-07-03-aa... 1,280 7/3/2021
2.8.1-nightly-2021-06-26-aa... 1,181 6/26/2021
2.8.1-nightly-2021-06-05-aa... 1,256 6/5/2021
2.8.1-nightly-2021-05-21-78... 1,183 5/21/2021
2.8.1-nightly-2021-05-20-78... 1,220 5/20/2021
2.8.1-nightly-2021-05-14-28... 1,182 5/14/2021
2.8.0 3,372 5/9/2021
2.7.3-nightly-2021-05-02-51... 1,217 5/2/2021
2.7.3-nightly-2021-04-30-51... 1,148 4/30/2021
2.7.3-nightly-2021-04-22-51... 1,134 4/22/2021
2.7.3-nightly-2021-04-15-51... 1,167 4/15/2021
2.7.3-nightly-2021-04-14-51... 1,142 4/14/2021
2.7.3-nightly-2021-04-03-51... 1,255 4/3/2021
2.7.3-nightly-2021-01-17-51... 1,333 1/17/2021
2.7.3-nightly-2021-01-14-51... 1,361 1/14/2021
2.7.3-nightly-2021-01-09-51... 1,319 1/9/2021
2.7.3-nightly-2021-01-07-51... 1,359 1/7/2021
2.7.2 1,747 12/12/2020
2.7.2-nightly-2020-11-12-31... 1,367 11/12/2020
2.7.2-nightly-2020-11-06-31... 1,429 11/6/2020
2.7.2-nightly-2020-11-02-31... 1,295 11/2/2020
2.7.1 1,700 11/1/2020
2.7.1-nightly-2020-10-07-31... 1,381 10/7/2020
2.7.1-nightly-2020-10-03-31... 1,310 10/3/2020
2.7.1-nightly-2020-10-02-31... 1,332 10/2/2020
2.7.1-nightly-2020-09-19-31... 1,388 9/19/2020
2.7.0 1,500 9/17/2020
2.6.4-nightly-2020-09-16-7b... 1,411 9/16/2020
2.6.4-nightly-2020-09-15-7b... 1,407 9/15/2020
2.6.3 1,578 9/2/2020
2.6.3-nightly-2020-09-02-7b... 1,422 9/2/2020
2.6.3-nightly-2020-09-01-7b... 1,379 9/1/2020
2.6.3-nightly-2020-08-27-b7... 1,377 8/27/2020
2.6.2 1,626 8/25/2020
2.6.2-nightly-2020-08-04-43... 1,285 8/4/2020
2.6.2-nightly-2020-07-31-43... 1,407 7/31/2020
2.6.2-nightly-2020-07-30-43... 1,433 7/30/2020
2.6.2-nightly-2020-07-27-43... 1,394 7/27/2020
2.6.2-nightly-2020-07-24-43... 1,317 7/24/2020
2.6.2-nightly-2020-07-23-43... 1,365 7/23/2020
2.6.1 2,368 7/23/2020
2.6.1-nightly-2020-07-17-42... 1,450 7/17/2020
2.6.1-nightly-2020-07-14-42... 1,346 7/14/2020
2.6.0 1,488 7/12/2020
2.5.3-nightly-2020-07-12-42... 1,351 7/12/2020
2.5.3-nightly-2020-05-12-d1... 1,401 5/12/2020
2.5.3-nightly-2020-05-11-3a... 1,418 5/11/2020
2.5.3-nightly-2020-04-16-41... 1,386 5/5/2020
2.5.2 1,672 5/4/2020
2.5.2-nightly-2020-04-16-41... 1,392 4/17/2020
2.5.2-nightly-2020-04-14-da... 1,352 4/16/2020
2.5.1 1,479 4/14/2020
2.5.0 1,507 4/13/2020
2.4.2-nightly-2020-04-14-da... 1,339 4/14/2020
2.4.2-nightly-2020-02-18-01... 1,491 2/18/2020
2.4.2-nightly-2020-02-12-1e... 1,407 2/12/2020
2.4.1 1,719 11/5/2019
2.4.1-nightly-2019-11-05-d3... 1,424 11/5/2019
2.4.0 1,549 10/31/2019
2.3.1-nightly-2019-10-31-7f... 1,437 10/31/2019
2.3.1-nightly-2019-10-16-f4... 1,355 10/17/2019
2.3.1-nightly-2019-10-11-0b... 1,406 10/12/2019
2.3.0 1,629 10/11/2019
2.2.3-nightly-2019-10-08-e3... 1,734 10/10/2019
2.2.3-nightly-2019-09-27-64... 1,771 9/27/2019
2.2.3-nightly-2019-08-29-43... 1,864 8/30/2019
2.2.2 2,154 8/29/2019
2.2.2-nightly-2019-08-14-2d... 1,715 8/14/2019
2.2.2-nightly-2019-08-05-2e... 1,722 8/5/2019
2.2.2-nightly-2019-07-09-07... 1,829 7/9/2019
2.2.1 2,129 7/2/2019
2.2.1-nightly-2019-07-02-c9... 1,745 7/2/2019
2.2.1-nightly-2019-05-23-29... 1,954 5/23/2019
2.2.0 2,424 2/7/2019
2.2.0-nightly-2019-04-08-4d... 1,737 4/8/2019
2.2.0-nightly-2019-03-08-2d... 1,771 3/8/2019
2.2.0-nightly-2019-03-05-f6... 1,847 3/5/2019
2.2.0-nightly-2019-02-19-13... 1,908 2/19/2019
2.1.0 2,269 1/27/2019
2.0.0 2,157 12/16/2018
2.0.0-nightly-2019-01-17-9f... 1,978 1/17/2019
2.0.0-alpha-nightly-2018-12... 1,739 12/16/2018
2.0.0-alpha-nightly-2018-12... 1,847 12/16/2018
1.3.0 2,543 7/14/2018
1.3.0-nightly-2018-07-14-7c... 2,213 7/14/2018
1.2.0 2,477 6/2/2018
1.2.0-nightly-2018-07-14-b1... 2,144 7/14/2018
1.2.0-nightly-2018-06-06-2c... 2,176 6/6/2018
1.2.0-nightly-2018-06-06-28... 2,086 6/6/2018
1.2.0-nightly-2018-06-02-98... 2,050 6/3/2018
1.1.0 2,507 2/27/2018
1.1.0-nightly-2018-06-02-17... 2,135 6/2/2018
1.1.0-nightly-2018-02-23-7e... 2,168 2/23/2018
1.0.1 2,611 2/8/2018
1.0.1-nightly-2018-02-16-b9... 2,264 2/16/2018
1.0.1-nightly-2018-02-15-13... 2,259 2/15/2018
1.0.1-nightly-2018-02-14-46... 2,134 2/14/2018
1.0.1-nightly-2018-02-08-97... 2,252 2/8/2018
1.0.0 1,952 1/16/2018
1.0.0-nightly-b24c77881a 1,812 1/16/2018
1.0.0-nightly-986e3393a4 1,913 1/18/2018
1.0.0-nightly-2018-02-08-f0... 2,302 2/8/2018

Updates for v4 leagues