Pegasustan 1.1.0

dotnet add package Pegasustan --version 1.1.0                
NuGet\Install-Package Pegasustan -Version 1.1.0                
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="Pegasustan" Version="1.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Pegasustan --version 1.1.0                
#r "nuget: Pegasustan, 1.1.0"                
#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 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

dotnet latest version downloads

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

GNU GPLv3

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.  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. 
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
1.1.0 67 1/20/2025
1.0.1 114 9/2/2024
1.0.0 139 6/23/2024 1.0.0 is deprecated because it has critical bugs.

Added new endpoints and response caching, fixed some bugs.