Freecurrency-API
0.1.0
dotnet add package Freecurrency-API --version 0.1.0
NuGet\Install-Package Freecurrency-API -Version 0.1.0
<PackageReference Include="Freecurrency-API" Version="0.1.0" />
paket add Freecurrency-API --version 0.1.0
#r "nuget: Freecurrency-API, 0.1.0"
// Install Freecurrency-API as a Cake Addin #addin nuget:?package=Freecurrency-API&version=0.1.0 // Install Freecurrency-API as a Cake Tool #tool nuget:?package=Freecurrency-API&version=0.1.0
Freecurrency-API
Unofficial RestEase C# Client for freecurrencyapi which uses IMemoryCache to cache the results.
Configuration
You will need your ApiKey to use freecurrencyapi, you can get one https://app.freecurrencyapi.com/register.
Register the client via Dependency Injection:
services.AddFreecurrencyAPI(o =>
o.ApiKey = "[YOUR_API_KEY]"
);
Usage
Status
Returns your current quota
IFreecurrencyClient client = // get from DI
var statusResponse = await client.GetStatusAsync();
Latest Exchange Rates
Returns the latest exchange rates. The default base currency is USD.
IFreecurrencyClient client = // get from DI
var rates = await _client.GetLatestExchangeRatesAsync(CurrencyCodes.USD, new [ CurrencyCodes.EUR, CurrencyCodes.AUD ]);
var rate = await _client.GetLatestExchangeRateAsync(CurrencyCodes.USD, CurrencyCodes.EUR);
Historical Exchange Rates
Returns the latest exchange rates. The default base currency is USD.
// todo
Currencies
Returns all supported currencies
IFreecurrencyClient client = // get from DI
var currencyResponse = await client.GetCurrency("EUR");
var currenciesResponse = await client.GetCurrencies(new [] { "EUR", "USD" });
var allCurrenciesResponse = await client.GetCurrencies();
Options
public class FreecurrencyAPIOptions
{
/// <summary>
/// The required BaseAddress.
/// </summary>
[Required]
public Uri BaseAddress { get; set; } = new("https://api.freecurrencyapi.com/v1");
[Required]
public string ApiKey { get; set; } = null!;
/// <summary>
/// Optional HttpClient name to use.
/// </summary>
public string? HttpClientName { get; set; }
/// <summary>
/// This timeout in seconds defines the timeout on the HttpClient which is used to call the BaseAddress.
/// Default value is 60 seconds.
/// </summary>
[Range(1, int.MaxValue)]
public int TimeoutInSeconds { get; set; } = 60;
/// <summary>
/// The maximum number of retries.
/// </summary>
[Range(0, 99)]
public int MaxRetries { get; set; } = 3;
/// <summary>
/// In addition to Network failures, TaskCanceledException, HTTP 5XX and HTTP 408. Also retry these <see cref="HttpStatusCode"/>s. [Optional]
/// </summary>
public HttpStatusCode[]? HttpStatusCodesToRetry { get; set; }
/// <summary>
/// The cache expiration time in minutes for the latest exchange rates.
/// Default value is 60 minutes.
/// </summary>
[Range(0, int.MaxValue)]
public int GetLatestExchangeRatesCacheExpirationInMinutes { get; set; } = 60;
/// <summary>
/// The cache expiration time in hours for the currencies.
/// Default value is 24 hours.
/// </summary>
[Range(0, int.MaxValue)]
public int GetCurrenciesCacheExpirationInHours { get; set; } = 24;
}
References
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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 is compatible. 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 | 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 is compatible. |
.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
- Microsoft.Extensions.Caching.Memory (>= 3.1.0)
- Microsoft.Extensions.Http.Polly (>= 3.1.0)
- RestEase.HttpClientFactory (>= 1.6.4)
- SanitizedHttpLogger (>= 0.0.3)
-
.NETStandard 2.1
- Microsoft.Extensions.Caching.Memory (>= 3.1.0)
- Microsoft.Extensions.Http.Polly (>= 3.1.0)
- RestEase.HttpClientFactory (>= 1.6.4)
- SanitizedHttpLogger (>= 0.0.3)
-
net6.0
- Microsoft.Extensions.Caching.Memory (>= 6.0.0)
- Microsoft.Extensions.Http.Polly (>= 6.0.0)
- RestEase.HttpClientFactory (>= 1.6.4)
- SanitizedHttpLogger (>= 0.0.3)
-
net7.0
- Microsoft.Extensions.Caching.Memory (>= 7.0.0)
- Microsoft.Extensions.Http.Polly (>= 7.0.0)
- RestEase.HttpClientFactory (>= 1.6.4)
- SanitizedHttpLogger (>= 0.0.3)
-
net8.0
- Microsoft.Extensions.Caching.Memory (>= 8.0.0)
- Microsoft.Extensions.Http.Polly (>= 8.0.0)
- RestEase.HttpClientFactory (>= 1.6.4)
- SanitizedHttpClientLogger (>= 0.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
# 0.1.0 (08 July 2024)
- #6 Fixing cache expiration timespans [bug]
- #5 Cache expiration timespans are using incorrect units when creating FreecurrencyClient [bug]
The full release notes can be found here: https://github.com/StefH/FreecurrencyAPI/blob/main/ReleaseNotes.md