using Application; using Infrastructure; using SharedKernel; using Web.Api; using Web.Api.Extensions; using System.Reflection; var builder = WebApplication.CreateBuilder(args); var settings = builder.Configuration.Get()!; Console.Title = $"{settings.App.Name} API"; Console.WriteLine($"ENV={builder.Environment.EnvironmentName}"); Console.WriteLine($"현재 시간: {DateTime.Now} / {TimeZoneInfo.Local.Id}"); builder.Services.Configure(builder.Configuration); builder.Services .AddApplication() .AddPresentation() .AddApiInfrastructure(builder.Configuration); // CORS builder.Services.AddCors(options => { options.AddPolicy(settings.CorsPolicy.Name, policy => { policy .WithOrigins(settings.CorsPolicy.AllowedOrigins.ToArray()) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials() .SetPreflightMaxAge(TimeSpan.FromSeconds(settings.CorsPolicy.PreflightMaxAgeSeconds)); }); }); builder.Services.AddEndpoints(Assembly.GetExecutingAssembly()); builder.Logging.AddConsole(); /** * ======================================================================================================================================================= */ var app = builder.Build(); /** * ======================================================================================================================================================= */ if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } // 상태 확인 app.MapHealthChecks("/health"); app.UseExceptionHandler(); app.UseCors(settings.CorsPolicy.Name); app.UseAuthentication(); app.UseAuthorization(); app.MapEndpoints(); app.Run();