Files
TitularesApp/backend/src/Titulares.Api/Program.cs

94 lines
2.6 KiB
C#
Raw Normal View History

// 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;
2025-10-29 15:50:55 -03:00
using Microsoft.AspNetCore.HttpOverrides;
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>();
builder.Services.AddSingleton<ConfiguracionRepositorio>();
builder.Services.AddSingleton<EstadoProcesoService>();
2025-10-29 15:50:55 -03:00
var frontendUrl = "http://192.168.5.128:8905";
builder.Services.AddCors(options =>
{
2025-10-29 15:50:55 -03:00
options.AddPolicy("AllowReactApp", policyBuilder =>
{
2025-10-29 15:50:55 -03:00
policyBuilder.WithOrigins(frontendUrl)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
2025-10-29 15:50:55 -03:00
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
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();
2025-10-29 15:50:55 -03:00
// DEBE IR ANTES DE UseRouting, UseCors, UseAuthorization, etc.
app.UseForwardedHeaders();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
// 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();