feat: Remove configuration method that also adds NodaTime
This commit is contained in:
@@ -17,31 +17,28 @@ For use outside of ASP.NET Core, see the
|
|||||||
[configuration](source/VMelnalksnis.NordigenDotNet.DependencyInjection/ServiceCollectionExtensions.cs).
|
[configuration](source/VMelnalksnis.NordigenDotNet.DependencyInjection/ServiceCollectionExtensions.cs).
|
||||||
|
|
||||||
1. Add configuration (for optional values see [options](source/VMelnalksnis.NordigenDotNet/NordigenOptions.cs))
|
1. Add configuration (for optional values see [options](source/VMelnalksnis.NordigenDotNet/NordigenOptions.cs))
|
||||||
|
```yaml
|
||||||
```yaml
|
"Nordigen": {
|
||||||
"Nordigen": {
|
|
||||||
"SecretId": "",
|
"SecretId": "",
|
||||||
"SecretKey": ""
|
"SecretKey": ""
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Register required services
|
2. Register required services (see [tests](tests/VMelnalksnis.NordigenDotNet.DependencyInjection.Tests/ServiceCollectionExtensionsTests.cs))
|
||||||
|
```csharp
|
||||||
```csharp
|
serviceCollection
|
||||||
// Only registers services from NordigenDotNet
|
.AddSingleton<IClock>(SystemClock.Instance)
|
||||||
services.AddNordigenDotNet(Configuration);
|
.AddSingleton(DateTimeZoneProviders.Tzdb)
|
||||||
// Also registers the IDateTimeZoneProvider, which is required
|
.AddNordigenDotNet(configuration);
|
||||||
serviceCollection.AddNordigenDotNet(Configuration, SystemClock.Instance, DateTimeZoneProviders.Tzdb);
|
```
|
||||||
```
|
|
||||||
|
|
||||||
3. (Optional) Configure retries
|
3. (Optional) Configure retries
|
||||||
with [Polly](https://github.com/App-vNext/Polly) ([NuGet package](https://www.nuget.org/packages/Microsoft.Extensions.Http.Polly))
|
with [Polly](https://github.com/App-vNext/Polly) ([NuGet package](https://www.nuget.org/packages/Microsoft.Extensions.Http.Polly))
|
||||||
|
```csharp
|
||||||
```csharp
|
serviceCollection
|
||||||
services
|
.AddNordigenDotNet(configuration)
|
||||||
.AddNordigenDotNet(Configuration, SystemClock.Instance, DateTimeZoneProviders.Tzdb)
|
|
||||||
.AddPolicyHandler(...);
|
.AddPolicyHandler(...);
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Use `INordigenClient` to access all endpoints, or one of the specific clients defined in `INordigenClient`
|
4. Use `INordigenClient` to access all endpoints, or one of the specific clients defined in `INordigenClient`
|
||||||
|
|
||||||
|
|||||||
@@ -12,11 +12,8 @@ using JetBrains.Annotations;
|
|||||||
|
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
using NodaTime;
|
|
||||||
|
|
||||||
using VMelnalksnis.NordigenDotNet.Accounts;
|
using VMelnalksnis.NordigenDotNet.Accounts;
|
||||||
using VMelnalksnis.NordigenDotNet.Agreements;
|
using VMelnalksnis.NordigenDotNet.Agreements;
|
||||||
using VMelnalksnis.NordigenDotNet.Institutions;
|
using VMelnalksnis.NordigenDotNet.Institutions;
|
||||||
@@ -39,23 +36,6 @@ public static class ServiceCollectionExtensions
|
|||||||
_userAgent = new(assemblyShortName, assemblyName.Version?.ToString());
|
_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>
|
/// <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="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="configuration">The configuration to which to bind options models.</param>
|
||||||
|
|||||||
+4
-1
@@ -27,7 +27,10 @@ public sealed class ServiceCollectionExtensionsTests
|
|||||||
|
|
||||||
var serviceCollection = new ServiceCollection();
|
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 serviceProvider = serviceCollection.BuildServiceProvider();
|
||||||
var nordigenClient = serviceProvider.GetRequiredService<INordigenClient>();
|
var nordigenClient = serviceProvider.GetRequiredService<INordigenClient>();
|
||||||
|
|||||||
@@ -40,7 +40,12 @@ public sealed class ServiceProviderFixture
|
|||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var serviceCollection = new ServiceCollection();
|
var serviceCollection = new ServiceCollection();
|
||||||
serviceCollection.AddNordigenDotNet(configuration, Clock, DateTimeZoneProviders.Tzdb);
|
|
||||||
|
serviceCollection
|
||||||
|
.AddSingleton<IClock>(Clock)
|
||||||
|
.AddSingleton(DateTimeZoneProviders.Tzdb)
|
||||||
|
.AddNordigenDotNet(configuration);
|
||||||
|
|
||||||
serviceCollection.AddLogging(builder =>
|
serviceCollection.AddLogging(builder =>
|
||||||
{
|
{
|
||||||
var logger = new LoggerConfiguration()
|
var logger = new LoggerConfiguration()
|
||||||
|
|||||||
Reference in New Issue
Block a user