ErgastApiClient 1.2.2
See the version list below for details.
dotnet add package ErgastApiClient --version 1.2.2
NuGet\Install-Package ErgastApiClient -Version 1.2.2
<PackageReference Include="ErgastApiClient" Version="1.2.2" />
paket add ErgastApiClient --version 1.2.2
#r "nuget: ErgastApiClient, 1.2.2"
// Install ErgastApiClient as a Cake Addin #addin nuget:?package=ErgastApiClient&version=1.2.2 // Install ErgastApiClient as a Cake Tool #tool nuget:?package=ErgastApiClient&version=1.2.2
Usage
Start by creating an ErgastClient
. Then create on of the request types and set parameters to narrow down your query.
Execute the request throughe the client with the GetResponseAsync(IErgastRequest)
method.
Below is an example of how to get the race results of the 11th race of the 2017 season.
// Relevant imports
using ErgastApi.Client;
using ErgastApi.Ids;
using ErgastApi.Requests;
// The client should be stored and reused during the lifetime of your application
var client = new ErgastClient();
// All request properties are optional (except 'Season' if 'Round' is set)
var request = new RaceResultsRequest
{
Season = "2017", // or Seasons.Current for current season
Round = "11", // or Rounds.Last or Rounds.Next for last or next round
DriverId = "vettel", // or Drivers.SebastianVettel
Limit = 30 // Limit the number of results returned
Offset = 0 // Result offset (used for paging)
};
// RaceResultsRequest returns a RaceResultsResponse
// Other requests returns other response types
RaceResultsResponse response = await client.GetResponseAsync(request);
The following request types are available:
- Race & Results
CircuitInfoRequest
ConstructorInfoRequest
DriverInfoRequest
FinishingStatusRequest
QualifyingResultsRequest
RaceListRequest
RaceResultsRequest
SeasonListRequest
- Standings
ConstructorStandingsRequest
DriverStandingsRequest
- Lap Times & Pit Stops
LapTimesRequest
PitStopsRequest
Here are some other examples:
// List of seasons where Alonso won the WDC and Ferrari got second in the WCC
new SeasonListRequest
{
DriverId = Drivers.FernandoAlonso,
DriverStanding = 1,
ConstructorId = Constructors.Ferrari,
ConstructorStanding = 2
}
// List of races where Raikkonen retired because
// of engine problems while racing for Ferrari
new RaceListRequest
{
DriverId = Drivers.KimiRaikkonen,
ConstructorId = Constructors.Ferrari,
FinishingStatus = FinishingStatusId.Engine
}
// Qualifying results from last round
new QualifyingResultsRequest
{
Season = Seasons.Current,
Round = Rounds.Last
}
// Driver standings after race 3 in 2017
new DriverStandingsRequest
{
Season = "2017",
Round = "3"
}
// List of circuits where Hamilton got pole, won the race
// and set fastest lap time while racing for McLaren
new CircuitInfoRequest
{
DriverId = Drivers.LewisHamilton,
ConstructorId = Constructors.McLaren,
QualifyingPosition = 1,
FinishingPosition = 1,
FastestLapRank = 1
}
// Drivers who have won the race at Baku
new DriverInfoRequest
{
CircuitId = Circuits.Baku,
FinishingPosition = 1
}
Driver, constructor and circuit IDs
Most current IDs are stored as constants in the Drivers
, Constructors
and Circuits
static classes.
Drivers.SebastianVettel // "vettel"
Constructors.Ferrari // "ferrari"
Circuits.Monza // "monza"
If the ID you are looking for is not listed there, then you will have to query the API with either
a DriverInfoRequest
, ConstructorInfoRequest
or CircuitInfoRequest
.
Here is how you could find the ID of Fernando Alonso:
// Get drivers in current season (leave out season to get a list of all drivers ever (requires paging))
var request = new DriverInfoRequest { Limit = 1000 }
var response = await client.GetResponseAsync(request);
response.Drivers.Single(x => x.FullName == "Fernando Alonso").DriverId;
Paging
Some responses will have a lot of results. Every request type has two properties used for paging - Limit
and Offset
.
The Limit
property allows you to limit the number of returned results.
The maximum value is 1000 but please use the smallest value that you can. If not set it defaults to 30.
The Offset
property specifies an offset into the result set (i.e. start from this position).
If not set it defaults to zero.
The response object returned from ErgastClient.GetResponseAsync()
contains the following information to help you with paging:
Limit
andOffset
(the values used for the response)TotalResults
Page
TotalPages
HasMorePages
Caching
ErgastClient
caches the response for all requests to minimize the load on the API server. Requests are cached by the resulting URL.
The default cache lifetime is one hour. You can change this by setting client.Cache.CacheEntryLifetime
to a different TimeSpan
value.
You can clear the cache by calling client.Cache.Clear()
.
TODOs
- Add helper methods for getting next/previous page
- Add more XML documentation for better intellisense
- Add more unit tests
Product | Versions 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 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard1.3 is compatible. netstandard1.4 was computed. netstandard1.5 was computed. netstandard1.6 was computed. netstandard2.0 was computed. netstandard2.1 was computed. |
.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. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.5
- Newtonsoft.Json (>= 9.0.1)
- System.Net.Http (>= 4.1.0)
-
.NETStandard 1.3
- Microsoft.Extensions.Caching.Memory (>= 1.0.0)
- NETStandard.Library (>= 1.6.0)
- Newtonsoft.Json (>= 9.0.1)
- System.Reflection (>= 4.3.0)
- System.Reflection.TypeExtensions (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
- Fixed issues with half points (they were being attempted parsed as `int`)
- Added constructors info to driver standings
- Fixed error with Q1 sometimes being an empty string causing a parsing error