feat: Remove configuration method that also adds NodaTime

This commit is contained in:
Valters Melnalksnis
2022-08-29 22:37:43 +03:00
parent e5c03de7b3
commit 38aabb9386
4 changed files with 28 additions and 43 deletions
+7 -10
View File
@@ -17,7 +17,6 @@ For use outside of ASP.NET Core, see the
[configuration](source/VMelnalksnis.NordigenDotNet.DependencyInjection/ServiceCollectionExtensions.cs).
1. Add configuration (for optional values see [options](source/VMelnalksnis.NordigenDotNet/NordigenOptions.cs))
```yaml
"Nordigen": {
"SecretId": "",
@@ -25,21 +24,19 @@ For use outside of ASP.NET Core, see the
}
```
2. Register required services
2. Register required services (see [tests](tests/VMelnalksnis.NordigenDotNet.DependencyInjection.Tests/ServiceCollectionExtensionsTests.cs))
```csharp
// Only registers services from NordigenDotNet
services.AddNordigenDotNet(Configuration);
// Also registers the IDateTimeZoneProvider, which is required
serviceCollection.AddNordigenDotNet(Configuration, SystemClock.Instance, DateTimeZoneProviders.Tzdb);
serviceCollection
.AddSingleton<IClock>(SystemClock.Instance)
.AddSingleton(DateTimeZoneProviders.Tzdb)
.AddNordigenDotNet(configuration);
```
3. (Optional) Configure retries
with [Polly](https://github.com/App-vNext/Polly) ([NuGet package](https://www.nuget.org/packages/Microsoft.Extensions.Http.Polly))
```csharp
services
.AddNordigenDotNet(Configuration, SystemClock.Instance, DateTimeZoneProviders.Tzdb)
serviceCollection
.AddNordigenDotNet(configuration)
.AddPolicyHandler(...);
```
@@ -12,11 +12,8 @@ using JetBrains.Annotations;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using NodaTime;
using VMelnalksnis.NordigenDotNet.Accounts;
using VMelnalksnis.NordigenDotNet.Agreements;
using VMelnalksnis.NordigenDotNet.Institutions;
@@ -39,23 +36,6 @@ public static class ServiceCollectionExtensions
_userAgent = new(assemblyShortName, assemblyName.Version?.ToString());
}
/// <summary>Adds all required services for <see cref="INordigenClient"/>.</summary>
/// <param name="serviceCollection">The service collection in which to register the services.</param>
/// <param name="configuration">The configuration to which to bind options models.</param>
/// <param name="clock">Clock for accessing the current time.</param>
/// <param name="dateTimeZoneProvider">Time zone provider for date and time serialization.</param>
/// <returns>The <see cref="IHttpClientBuilder"/> for the <see cref="HttpClient"/> used by <see cref="INordigenClient"/>.</returns>
public static IHttpClientBuilder AddNordigenDotNet(
this IServiceCollection serviceCollection,
IConfiguration configuration,
IClock clock,
IDateTimeZoneProvider dateTimeZoneProvider)
{
serviceCollection.TryAddSingleton(clock);
serviceCollection.TryAddSingleton(dateTimeZoneProvider);
return serviceCollection.AddNordigenDotNet(configuration);
}
/// <summary>Adds all required services for <see cref="INordigenClient"/>, excluding external dependencies.</summary>
/// <param name="serviceCollection">The service collection in which to register the services.</param>
/// <param name="configuration">The configuration to which to bind options models.</param>
@@ -27,7 +27,10 @@ public sealed class ServiceCollectionExtensionsTests
var serviceCollection = new ServiceCollection();
serviceCollection.AddNordigenDotNet(configuration, SystemClock.Instance, DateTimeZoneProviders.Tzdb);
serviceCollection
.AddSingleton<IClock>(SystemClock.Instance)
.AddSingleton(DateTimeZoneProviders.Tzdb)
.AddNordigenDotNet(configuration);
var serviceProvider = serviceCollection.BuildServiceProvider();
var nordigenClient = serviceProvider.GetRequiredService<INordigenClient>();
@@ -40,7 +40,12 @@ public sealed class ServiceProviderFixture
.Build();
var serviceCollection = new ServiceCollection();
serviceCollection.AddNordigenDotNet(configuration, Clock, DateTimeZoneProviders.Tzdb);
serviceCollection
.AddSingleton<IClock>(Clock)
.AddSingleton(DateTimeZoneProviders.Tzdb)
.AddNordigenDotNet(configuration);
serviceCollection.AddLogging(builder =>
{
var logger = new LoggerConfiguration()