OpenUrzednik.NET to nowoczesny, otwartoźródłowy zestaw bibliotek dla platformy .NET, służący do integracji z polskimi API oraz danymi publicznymi. W aktualnej fazie rozwoju projekt skupia się na wspólnych fundamentach (OpenUrzednik.Core) oraz na referencyjnym kliencie API NBP (OpenUrzednik.Nbp), na którego wzór powstaną kolejne pakiety.
⚠️ Projekt nieoficjalny: Ten zestaw bibliotek jest oddolną inicjatywą społecznościową i nie jest powiązany, autoryzowany ani sponsorowany przez żadne z polskich ministerstw ani urzędów państwowych.
Większość istniejących pakietów dla polskich API została porzucona lub nie utrzymuje się w nowoczesnym modelu .NET. OpenUrzednik.NET ma dostarczać:
- Nowoczesne API: wsparcie dla
net8.0,net9.0inet10.0 - Spójne modele błędów:
OpenUrzednikResult/OpenUrzednikResult<T>zamiast rozproszonej logiki błędów - Elastyczność: zachowanie klasycznego stylu przez
.EnsureSuccess()/.EnsureSuccessAsync() - Przejrzysty rozwój: kod podzielony na
Corei pakiety provider-specific
| Pakiet | Status | Opis | Celowy target |
|---|---|---|---|
| OpenUrzednik.Core | ✅ Dostępne podstawowe abstrakcje | OpenUrzednikResult, OpenUrzednikResult<T>, OpenUrzednikError, OpenUrzednikException oraz metody rozszerzeń EnsureSuccess / EnsureSuccessAsync |
net8.0, net9.0, net10.0 |
| OpenUrzednik.Http | 🧪 Preview | Wspólna warstwa HTTP dla providerów REST/JSON (RestRequestExecutor). Używają jej pakiety providerów, nie aplikacje |
net8.0, net9.0, net10.0 |
| OpenUrzednik.Extensions.Logging | 🧪 Preview | Przekazuje logi klientów do ILogger z Microsoft.Extensions.Logging |
net8.0, net9.0, net10.0 |
| OpenUrzednik.Diagnostics | 🧪 Preview | Zamienia spany klientów na Activity dla OpenTelemetry (AddSource("OpenUrzednik.*")) |
net8.0, net9.0, net10.0 |
| OpenUrzednik.Nbp | 🧪 Preview | Kursy walut (tabele A, B, C), tabele kursów i ceny złota z API NBP. API publiczne może się jeszcze zmienić | net8.0, net9.0, net10.0 |
| OpenUrzednik.Nbp.DependencyInjection | 🧪 Preview | AddOpenUrzednikNbp(): klienty NBP w DI z IHttpClientFactory, gotowe na AddStandardResilienceHandler() |
net8.0, net9.0, net10.0 |
| OpenUrzednik.Gus | 🚧 Szkielet | Pakiet przygotowany pod integrację z GUS | net8.0, net9.0, net10.0 |
| OpenUrzednik.Krs | 🚧 Szkielet | Pakiet przygotowany pod integrację z KRS | net8.0, net9.0, net10.0 |
| OpenUrzednik.Mf | 🚧 Szkielet | Pakiet przygotowany pod integrację z Białą Listą VAT | net8.0, net9.0, net10.0 |
Aktualnie najłatwiej zacząć od OpenUrzednik.Core.
using OpenUrzednik.Core;
using OpenUrzednik.Core.Errors;
using OpenUrzednik.Core.Extensions;
OpenUrzednikResult<int> result = OpenUrzednikResult.Success(42);
int value = result.EnsureSuccess();
Console.WriteLine(value);Przykład błędu biznesowego:
using OpenUrzednik.Core;
using OpenUrzednik.Core.Errors;
using OpenUrzednik.Core.Extensions;
OpenUrzednikResult<int> failed = OpenUrzednikResult.Failure<int>(new ValidationError("NIP is invalid."));
try
{
int value = failed.EnsureSuccess();
}
catch (ValidationException ex)
{
Console.WriteLine(ex.Message);
}Pakiet OpenUrzednik.Nbp zawiera klienty NbpCurrencyExchangeRateClient, NbpExchangeRateTableClient i NbpGoldPriceClient (wersja preview — sposób tworzenia klientów jeszcze się zmieni, zob. ADR-0007). Rozszerzenia DI pojawią się w osobnych pakietach *.DependencyInjection. Pakiety OpenUrzednik.Gus, OpenUrzednik.Krs i OpenUrzednik.Mf są szkieletami — prace nad nimi ruszą po ukończeniu pakietu NBP (ADR-0010).
Testy znajdują się w katalogu tests/: testy jednostkowe, testy HTTP z WireMockiem oraz (opcjonalne, uruchamiane ręcznie) testy na prawdziwym API.
Chcesz dodać obsługę kolejnego źródła danych lub zgłosić błąd? Zobacz CONTRIBUTING.md — zawiera zasady pracy nad repozytorium, konwencje API oraz instrukcje dla pull requestów.
Projekt jest dostępny na warunkach licencji MIT. Szczegóły znajdziesz w pliku LICENSE.