-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWebInfrastructureExtension.cs
More file actions
40 lines (36 loc) · 1.48 KB
/
Copy pathWebInfrastructureExtension.cs
File metadata and controls
40 lines (36 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
namespace Comanda.Orchestrator.WebApi.Extensions;
[ExcludeFromCodeCoverage(Justification = "contains only web infrastructure configuration with no business logic.")]
public static class WebInfrastructureExtension
{
public static void AddWebComposition(this IServiceCollection services)
{
var provider = services.BuildServiceProvider();
var settings = provider.GetRequiredService<ISettings>();
services.AddControllers();
services.AddHttpContextAccessor();
services.AddProviders();
services.AddEndpointsApiExplorer();
services.AddCorsConfiguration();
services.AddHttpClients();
services.AddFluentValidationAutoValidation(options =>
{
options.DisableDataAnnotationsValidation = true;
});
services.AddOpenApiSpecification();
services.AddFederation(options =>
{
options.Authority = settings.Federation.Authority;
options.ClientId = settings.Federation.ClientId;
options.Realm = settings.Federation.Realm;
options.ClientSecret = settings.Federation.ClientSecret;
options.Audiences = settings.Federation.Audiences;
});
services.AddIdempotency()
.WithInMemoryCache(options =>
{
options.DefaultCacheExpiration = TimeSpan.FromMinutes(1);
options.DefaultHeaderName = Headers.Idempotency;
options.ThrowOnMissingKey = false;
});
}
}