feat: Remove configuration method that also adds NodaTime
This commit is contained in:
@@ -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>
|
||||
|
||||
+4
-1
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user