using Core.Blueprint.Logging.Configuration; using Core.Inventory.External.ClientConfiguration; using Core.Inventory.Service.API.Extensions; using Microsoft.AspNetCore.HttpLogging; using System.Reflection; using System.Text.Json.Serialization; var builder = WebApplication.CreateBuilder(args); builder.Services.AddLogs(builder); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Configuration .AddUserSecrets(Assembly.GetExecutingAssembly()) .AddEnvironmentVariables(); builder.Services.RegisterExternalLayer(builder.Configuration); builder.Services.AddServiceConfigurationLayer(); builder.Services.AddResponseCompression(); builder.Services.AddProblemDetails(); builder.Services.AddMemoryCache(); builder.Host.ConfigureServices((context, services) => { services.AddLogging(); services.AddControllers(); services.AddProblemDetails(); services.AddCors(options => options.AddDefaultPolicy(policyBuilder => policyBuilder .AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod())); builder.Services.Configure(options => { options.SerializerOptions.Converters.Add(new JsonStringEnumConverter()); }); services .AddEndpointsApiExplorer() .AddVersioning() .AddSwagger(builder.Configuration); services.AddHealthChecks(); services.AddHttpLogging(options => options.LoggingFields = HttpLoggingFields.All); builder.Services.AddOutputCache(options => { options.AddBasePolicy(builder => builder.Expire(TimeSpan.FromSeconds(10))); options.AddPolicy("Expire20", builder => builder.Expire(TimeSpan.FromSeconds(20))); options.AddPolicy("Expire30", builder => builder.Expire(TimeSpan.FromSeconds(30))); }); }); var app = builder.Build(); app.UseRouting(); app.UseSwagger(); app.UseSwaggerUI(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.UseCors(); app.ConfigureSwagger(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseResponseCompression(); app.UseOutputCache(); app.UseResponseCaching(); app.UseLogging(builder.Configuration); app.MapHealthChecks("/health"); app.Run();