Pegasustan 1.1.0
dotnet add package Pegasustan --version 1.1.0
NuGet\Install-Package Pegasustan -Version 1.1.0
<PackageReference Include="Pegasustan" Version="1.1.0" />
paket add Pegasustan --version 1.1.0
#r "nuget: Pegasustan, 1.1.0"
// Install Pegasustan as a Cake Addin #addin nuget:?package=Pegasustan&version=1.1.0 // Install Pegasustan as a Cake Tool #tool nuget:?package=Pegasustan&version=1.1.0
Pegasustan
Pegasus Unofficial API client written in .NET Standard 2.0.
It provides a simple way to fetch ticket fares for a specified route. More functionality perhaps will be added later.
[!Warning] This project is not (and will not be) related to Pegasus NDC API.
[!Note] This project is in no way affiliated with Pegasus Airlines. This is just a hobby project created for fun.
Installation
Pegasustan is available on NuGet.
Usage
The following code demonstrates basic usage of Pegasustan.
[!Warning] Pegasus API is unstable! Some functionalities can be suddenly gone or do not work as expected.
try
{
// Create and initialize PegasusClient
PegasusClient client = await PegasusClient.CreateAsync();
// Fetch departure countries
Country[] countries = await client.GetDepartureCountriesAsync();
// Pick a departure port
Port ankaraPort = countries.FindPortByCountryAndPortCode("TR", "ESB");
// Fetch arrival countries
Country[] arrivalCountries = await client.GetArrivalCountriesAsync(ankaraPort);
// Pick an arrival port
Port berlinPort = arrivalCountries.FindPortByCountryAndPortCode("DE", "BER");
// Pick a currency for the request
Currency usd = (await client.GetCurrenciesAsync()).FindByCode("USD");
// Fetch ticket fares months counting from today in USD
FaresMonth[] faresMonths = await client.GetFaresMonthsAsync(
ankaraPort,
berlinPort,
DateTime.Today.ToUniversalTime(),
usd);
}
catch (PegasusException ex)
{
// The API is likely unavailable or changed...
}
Language selection
The following code demonstrates how to change the API response language.
client.ChangeLanguage("tr");
Currently, there are 8 available languages (according to Pegasus website):
- en (English, default)
- tr (Turkish)
- de (German)
- fr (French)
- ru (Russian)
- it (Italian)
- es (Spanish)
- ar (Arabic)
Caching
PegasusClient
supports 3 modes of response caching:
- None - Do not cache responses at all.
- Smart - Cache some of the responses according to their probable lifetime/freshness. Set by default.
- Forced - Cache all the responses that can be cached and do not update them at any point.
You can change the mode using the Caching
property in the PegasusClient
.
client.Caching = PegasusClient.CachingMode.None;
Port matrix
The following code demonstrates how to get and iterate through all of the airport combinations.
// Fetch port matrix
PortMatrixRow[] portMatrix = await client.GetPortMatrixAsync();
// Iterate through the rows
foreach (PortMatrixRow row in portMatrix)
{
PortMatrixItem departurePort = row.Departure;
foreach (PortMatrixItem arrivalPort in row.Arrivals)
{
// Print all combinations like: ESB -> BER
Console.WriteLine($"{departurePort.Code} -> {arrivalPort.Code}");
}
}
Best deals
The following code demonstrates how to get the best deals for a certain city.
// Fetch cities with the best deals
BestDealsCity[] cities = await client.GetCitiesForBestDealsAsync();
// Pick a city
BestDealsCity amsterdamCity = cities.FindByCode("AMS");
// Fetch best deals in USD
BestDeal[] bestDeals = await client.GetBestDealsAsync(amsterdamCity, Currency.Dollar);
Contributing
There is a lot of to discover and add.
I really welcome community pull requests for bug fixes, enhancements, and documentation.
License
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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | 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 | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Text.Json (>= 8.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added new endpoints and response caching, fixed some bugs.