73 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| // 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<ConfiguracionApp>(builder.Configuration);
 | |
| 
 | |
| // Añadimos nuestro repositorio personalizado
 | |
| builder.Services.AddSingleton<TitularRepositorio>();
 | |
| builder.Services.AddScoped<ScrapingService>();
 | |
| builder.Services.AddScoped<CsvService>();
 | |
| 
 | |
| // Añadimos la política de CORS
 | |
| builder.Services.AddCors(options =>
 | |
| {
 | |
|     options.AddPolicy("AllowReactApp", builder =>
 | |
|     {
 | |
|         builder.WithOrigins("http://localhost:5173")
 | |
|                .AllowAnyHeader()
 | |
|                .AllowAnyMethod()
 | |
|                .AllowCredentials();
 | |
|     });
 | |
| });
 | |
| 
 | |
| builder.Services.AddSignalR();
 | |
| 
 | |
| builder.Services.AddHostedService<ProcesoScrapingWorker>();
 | |
| 
 | |
| // 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>("/titularesHub");
 | |
| 
 | |
| 
 | |
| app.Run(); |