Easy.Tools.Finance.CBAR
1.0.5
dotnet add package Easy.Tools.Finance.CBAR --version 1.0.5
NuGet\Install-Package Easy.Tools.Finance.CBAR -Version 1.0.5
<PackageReference Include="Easy.Tools.Finance.CBAR" Version="1.0.5" />
<PackageVersion Include="Easy.Tools.Finance.CBAR" Version="1.0.5" />
<PackageReference Include="Easy.Tools.Finance.CBAR" />
paket add Easy.Tools.Finance.CBAR --version 1.0.5
#r "nuget: Easy.Tools.Finance.CBAR, 1.0.5"
#:package Easy.Tools.Finance.CBAR@1.0.5
#addin nuget:?package=Easy.Tools.Finance.CBAR&version=1.0.5
#tool nuget:?package=Easy.Tools.Finance.CBAR&version=1.0.5
Easy.Tools.Finance.CBAR
Easy.Tools.Finance.CBAR is a high-performance, enterprise-ready .NET library designed to fetch official daily exchange rates from the Central Bank of Azerbaijan (CBAR/AMB).
It handles XML parsing, network resilience, and data flattening efficiently, allowing developers to focus on business logic.
Features
- ** High Performance:** Uses Static XML Serializer caching and Zero-Allocation
Span<T>parsing logic to minimize memory pressure. - ** Resilience:** Built-in Retry Policy with exponential backoff for handling network glitches.
- ** Culture Safe:** Parsing logic is strictly Invariant Culture, ensuring stability regardless of the server's regional settings.
- ** Easy Integration:** Single-line integration with
IServiceCollection(Dependency Injection). - ** Async & Cancellable:** Full support for
async/awaitandCancellationTokento handle request timeouts properly. - ** Multi-Target:** Supports
.NET 10,.NET 8,.NET 6,.NET Standard 2.0, and.NET Framework 4.7.2+.
Installation
Install via NuGet Package Manager:
Install-Package Easy.Tools.Finance.CBAR
Or via .NET CLI:
dotnet add package Easy.Tools.Finance.CBAR
Usage
1. Service Registration (Program.cs)
Register the client in your Program.cs. The library provides a fluent extension method.
using Easy.Tools.Finance.CBAR;
var builder = WebApplication.CreateBuilder(args);
// 1. Standard Registration
builder.Services.AddCbarClient();
// 2. OR: Advanced Configuration
builder.Services.AddCbarClient(options =>
{
options.RetryCount = 3; // Retry 3 times on failure
options.RetryDelaySeconds = 2; // Wait 2 seconds between retries
// options.BaseUrl = "..."; // Optional: Use a proxy URL if needed
});
var app = builder.Build();
2. Fetching Rates (Controller Example)
Inject ICbarClient into your controllers or services. Ensure you pass the CancellationToken for best practices.
using Easy.Tools.Finance.CBAR;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("[controller]")]
public class CurrencyController : ControllerBase
{
private readonly ICbarClient _cbarClient;
public CurrencyController(ICbarClient cbarClient)
{
_cbarClient = cbarClient;
}
[HttpGet("today")]
public async Task<IActionResult> GetRates(CancellationToken cancellationToken)
{
// Fetch all rates efficiently
var rates = await _cbarClient.GetTodayRatesAsync(cancellationToken);
// Example 1: Filter Foreign Currencies (USD, EUR, etc.)
var currencies = rates.Where(x => x.CurrencyType == "Xarici valyutalar").ToList();
// Example 2: Filter Precious Metals (Gold, Silver, etc.)
var metals = rates.Where(x => x.CurrencyType == "Bank metalları").ToList();
// Get Specific Rates
var usd = currencies.FirstOrDefault(x => x.Code == "USD");
var gold = metals.FirstOrDefault(x => x.Code == "XAU"); // XAU = Gold
if (usd != null)
Console.WriteLine($"1 USD = {usd.Value} AZN");
if (gold != null)
Console.WriteLine($"1 Ounce Gold = {gold.Value} AZN");
return Ok(rates);
}
}
Models
The package returns a list of CbarCurrency objects. The data structure is flattened for ease of use.
| Property | Type | Description |
|---|---|---|
Code |
string |
The ISO code (e.g., USD, EUR, XAU). |
Name |
string |
The localized name (e.g., 1 ABŞ dolları, Qızıl). |
Value |
decimal |
The official exchange rate. Parsed safely using decimal. |
Nominal |
int |
The unit amount (e.g., 1, 100). Useful for currencies like JPY (100). |
CurrencyType |
string |
The category (e.g., Xarici valyutalar or Bank metalları). |
Contributing
Contributions and suggestions are welcome. Please open an issue or submit a pull request.
License
This project is licensed under the MIT License.
© 2025 Elmin Alirzayev / Easy Code Tools
| 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. net9.0 is compatible. 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. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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 is compatible. net471 was computed. net472 is compatible. net48 is compatible. 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. |
-
.NETFramework 4.7
- Microsoft.Extensions.Http (>= 10.0.2)
- System.Net.Http (>= 4.3.4)
-
.NETFramework 4.7.2
- Microsoft.Extensions.Http (>= 10.0.2)
- System.Net.Http (>= 4.3.4)
-
.NETFramework 4.8
- Microsoft.Extensions.Http (>= 10.0.2)
- System.Net.Http (>= 4.3.4)
-
.NETStandard 2.0
- Microsoft.Extensions.Http (>= 10.0.2)
-
.NETStandard 2.1
- Microsoft.Extensions.Http (>= 10.0.2)
-
net10.0
- Microsoft.Extensions.Http (>= 10.0.2)
-
net6.0
- Microsoft.Extensions.Http (>= 10.0.2)
-
net7.0
- Microsoft.Extensions.Http (>= 10.0.2)
-
net8.0
- Microsoft.Extensions.Http (>= 10.0.2)
-
net9.0
- Microsoft.Extensions.Http (>= 10.0.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Initial release: Supports daily rate fetching, retry logic, and DI integration.