Bodu.Financial.ExchangeRates.Fred
0.7.1
dotnet add package Bodu.Financial.ExchangeRates.Fred --version 0.7.1
NuGet\Install-Package Bodu.Financial.ExchangeRates.Fred -Version 0.7.1
<PackageReference Include="Bodu.Financial.ExchangeRates.Fred" Version="0.7.1" />
<PackageVersion Include="Bodu.Financial.ExchangeRates.Fred" Version="0.7.1" />
<PackageReference Include="Bodu.Financial.ExchangeRates.Fred" />
paket add Bodu.Financial.ExchangeRates.Fred --version 0.7.1
#r "nuget: Bodu.Financial.ExchangeRates.Fred, 0.7.1"
#:package Bodu.Financial.ExchangeRates.Fred@0.7.1
#addin nuget:?package=Bodu.Financial.ExchangeRates.Fred&version=0.7.1
#tool nuget:?package=Bodu.Financial.ExchangeRates.Fred&version=0.7.1
Bodu.Financial.ExchangeRates.Fred
API stability — Preview. The public API surface is largely settled but is still being finalized ahead of the 1.0 release and may change; breaking changes can land in a minor version until then.
A Bodu.Financial exchange-rate provider backed by FRED (Federal Reserve Bank of St. Louis), served through its foreign-exchange REST series.
It resolves each currency pair to a single FRED series identifier, fetches that series'
observations, parses the JSON response, and serves the results as
Bodu.Financial.ExchangeRates.ExchangeRate values through the standard
IDatedRateProvider and IRateProvider contracts — so it composes with
Money.ConvertTo, the caching and aggregating providers, and the rest of the
Bodu.Financial FX stack. The same interfaces and DI shape as every other provider, a
different data source.
using Bodu.Financial.ExchangeRates;
// The provider builds and owns its HttpClient from the options; dispose it to release the client.
using var provider = new FredRateProvider(new FredRateProviderOptions { ApiKey = "…" });
// Warm a pair for a range (recommended), then look rates up synchronously.
await provider.LoadPairAsync("EUR", "USD", new DateOnly(2023, 1, 1), new DateOnly(2023, 6, 30));
RateLookupResult usd = provider.GetRate("EUR", "USD", new DateOnly(2023, 1, 3));
Behaviour
- Per-series mapping. FRED publishes each foreign-exchange rate as an independent time
series quoted in a fixed direction — for example
DEXUSEUquotes US dollars per euro (EUR/USD). TheSeriesMapon the options maps each currency pair to its FRED series id, keyedFROM/TOin the exact direction the series is quoted, so no inversion is required. - Unmapped pairs. A pair with no entry in
SeriesMapreturns no data — without issuing a request. The reverse direction of a mapped pair is served by the base class's inverse-lookup fallback. To support additional pairs, add mappings viaSeriesMap. - Built-in defaults. The options seed a table of common USD pairs (EUR/USD, GBP/USD, AUD/USD, NZD/USD, USD/CAD, USD/JPY, USD/CHF, USD/CNY, USD/MXN, USD/INR, USD/SEK, USD/NOK, USD/DKK, USD/ZAR, USD/BRL, USD/KRW, USD/HKD, USD/SGD, USD/TWD).
- Missing observations. FRED encodes a day with no published value as the string
"."; those observations are skipped. - API key required. Set
ApiKey; it is presented as theapi_keyquery parameter. - No provider-local disk cache. For durable caching, compose with
AddCachedRateProvider<…>from theBodu.Financial.ExchangeRates.Cachingpackage.
Endpoint configuration
| Option | Default | Purpose |
|---|---|---|
ApiKey |
(required) | The FRED API key, sent as api_key. |
BaseAddress |
https://api.stlouisfed.org/fred/ |
The API host. |
ObservationsPath |
series/observations |
The series-observations endpoint. |
SeriesMap |
built-in USD pairs | Maps each FROM/TO pair to a FRED series id. |
HttpTimeout |
30 s | Applied to the HttpClient the provider creates, or by the DI registration. |
AllowSynchronousNetworkAccess |
false |
Opt in to blocking on-demand fetches from synchronous lookups. |
DefaultLookback |
7 days | The window fetched around a date for on-demand and latest-rate lookups. |
CurrencyAliases |
empty | Maps ISO codes to symbol components where they differ. |
Dependency injection
The package ships its own AddFredExchangeRates registration in the
Bodu.Financial.ExchangeRates namespace — there is no separate *.DependencyInjection
package.
services
.AddFinancialService(configuration)
.AddFredExchangeRates(configuration, configure: o => o.ApiKey = "…");
Part of the Bodu utility library.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 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. 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. |
-
net10.0
- Bodu.Core (>= 1.0.0)
- Bodu.Financial (>= 1.0.0)
- Bodu.Financial.DependencyInjection (>= 1.0.0)
- Bodu.Financial.ExchangeRates (>= 1.0.0)
- Bodu.Financial.ExchangeRates.DependencyInjection (>= 1.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.12)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Http (>= 10.0.12)
- Microsoft.Extensions.Http.Resilience (>= 10.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.12)
- Microsoft.Extensions.Options (>= 10.0.12)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.12)
-
net8.0
- Bodu.Core (>= 1.0.0)
- Bodu.Financial (>= 1.0.0)
- Bodu.Financial.DependencyInjection (>= 1.0.0)
- Bodu.Financial.ExchangeRates (>= 1.0.0)
- Bodu.Financial.ExchangeRates.DependencyInjection (>= 1.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Http.Resilience (>= 8.10.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Options (>= 8.0.2)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.