// backend/src/Titulares.Api/Program.cs using Titulares.Api.Data; using Titulares.Api.Hubs; using Titulares.Api.Models; using Titulares.Api.Services; using Titulares.Api.Workers; var builder = WebApplication.CreateBuilder(args); builder.Configuration.AddJsonFile("configuracion.json", optional: false, reloadOnChange: true); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.Configure(builder.Configuration); // Añadimos nuestro repositorio personalizado builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); // Obtener los orígenes permitidos desde la configuración var allowedOrigins = builder.Configuration.GetValue("AllowedOrigins")?.Split(',') ?? new[] { "http://localhost:5173" }; // Añadimos la política de CORS builder.Services.AddCors(options => { options.AddPolicy("AllowReactApp", policyBuilder => { policyBuilder.WithOrigins(allowedOrigins) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); builder.Services.AddSignalR(); builder.Services.AddHostedService(); // Añadimos los servicios de autorización (necesario para app.UseAuthorization) builder.Services.AddAuthorization(); // 2. Construir la aplicación. // ========================== var app = builder.Build(); // 3. Configurar el pipeline de peticiones HTTP. // ============================================ if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } // COMENTAMOS LA REDIRECCIÓN HTTPS PORQUE TRABAJAMOS CON HTTP // app.UseHttpsRedirection(); // 1. Activa el enrutamiento para que la app sepa a dónde va la petición. app.UseRouting(); // 2. APLICA LA POLÍTICA DE CORS. app.UseCors("AllowReactApp"); // 3. Usamos la autorización. app.UseAuthorization(); // 4. Mapeamos los endpoints (Controladores y Hubs). app.MapControllers(); app.MapHub("/titularesHub"); app.Run();