91 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Core.Blueprint.Logging.Configuration;
 | |
| using Core.Cerberos.Adapters.Extensions;
 | |
| using Core.Cerberos.Adapters.Helpers;
 | |
| using Core.Cerberos.Provider;
 | |
| using Microsoft.AspNetCore.RateLimiting;
 | |
| using Microsoft.AspNetCore.ResponseCompression;
 | |
| using System.IO.Compression;
 | |
| using System.Reflection;
 | |
| using System.Threading.RateLimiting;
 | |
| 
 | |
| var builder = WebApplication.CreateBuilder(args);
 | |
| 
 | |
| var authSettings = AuthHelper.GetAuthSettings(builder, "cerberos_dal");
 | |
| 
 | |
| builder.Services.ConfigureAuthentication(builder.Configuration, authSettings);
 | |
| 
 | |
| builder.Configuration.AddUserSecrets(Assembly.GetExecutingAssembly()).AddEnvironmentVariables();
 | |
| 
 | |
| // Add services to the container.
 | |
| 
 | |
| builder.Services.AddControllers();
 | |
| // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
 | |
| builder.Services.AddEndpointsApiExplorer();
 | |
| 
 | |
| builder.Services.AddLogs(builder);
 | |
| 
 | |
| builder.Services.AddCors(options =>
 | |
| {
 | |
|     options.AddPolicy("AllowAll", policyBuilder =>
 | |
|         policyBuilder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
 | |
| });
 | |
| builder.Services.AddMvc().AddJsonOptions(options =>
 | |
| {
 | |
|     options.JsonSerializerOptions.WriteIndented = true;
 | |
|     options.JsonSerializerOptions.MaxDepth = 20;
 | |
|     options.JsonSerializerOptions.NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals;
 | |
| });
 | |
| builder.Services.Configure<BrotliCompressionProviderOptions>(options =>
 | |
| {
 | |
|     options.Level = CompressionLevel.Fastest;
 | |
| });
 | |
| builder.Services.Configure<GzipCompressionProviderOptions>(options =>
 | |
| {
 | |
|     options.Level = CompressionLevel.SmallestSize;
 | |
| });
 | |
| builder.Services.AddResponseCompression(options =>
 | |
| {
 | |
|     options.EnableForHttps = true;
 | |
|     options.Providers.Add<BrotliCompressionProvider>();
 | |
|     options.Providers.Add<GzipCompressionProvider>();
 | |
| });
 | |
| 
 | |
| builder.Services.AddRateLimiter(_ => _
 | |
|     .AddFixedWindowLimiter("fixed", options =>
 | |
|     {
 | |
|         options.PermitLimit = 5;
 | |
|         options.Window = TimeSpan.FromSeconds(10);
 | |
|         options.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
 | |
|         options.QueueLimit = 2;
 | |
|     })
 | |
|     .AddSlidingWindowLimiter("sliding", options =>
 | |
|     {
 | |
|         options.PermitLimit = 5;
 | |
|         options.Window = TimeSpan.FromSeconds(10);
 | |
|         options.SegmentsPerWindow = 5;
 | |
|         options.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
 | |
|         options.QueueLimit = 2;
 | |
|     }));
 | |
| 
 | |
| builder.Services.AddResponseCaching();
 | |
| builder.Services.AddControllers();
 | |
| builder.Services.AddEndpointsApiExplorer();
 | |
| builder.Services.AddSwagger(builder.Configuration, "Core.Cerberos.DAL.API.xml", authSettings);
 | |
| builder.Services.AddVersioning(builder.Configuration);
 | |
| builder.Services.AddLogging();
 | |
| builder.Services.AddProblemDetails();
 | |
| 
 | |
| 
 | |
| builder.Services.AddDALLayer(builder.Configuration);
 | |
| 
 | |
| var app = builder.Build();
 | |
| 
 | |
| app.UseSwaggerUI(builder.Configuration, authSettings);
 | |
| app.ConfigureSwagger(builder.Configuration);
 | |
| app.UseLogging(builder.Configuration);
 | |
| app.UseHttpsRedirection();
 | |
| app.UseAuthorization();
 | |
| app.MapControllers();
 | |
| 
 | |
| app.Run();
 | 
