Apigateway/Microservicios/MsUsuarios/Program.cs

138 lines
3.6 KiB
C#
Raw Normal View History

2023-02-02 10:50:02 -05:00
using MSAdminUsuarios.Context;
using Microsoft.EntityFrameworkCore;
using Security;
2023-03-21 18:55:21 -05:00
using System.Reflection;
using MSAdminUsuarios.Models;
using Microsoft.Extensions.Options;
using RabbitMQ.Client;
using MSAdminUsuarios.Utils;
using RabbitMQ.Client.Events;
using Microsoft.AspNetCore.Rewrite;
2023-02-02 10:50:02 -05:00
var builder = WebApplication.CreateBuilder(args);
2023-03-21 18:55:21 -05:00
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true);
2023-02-02 10:50:02 -05:00
2023-03-21 18:55:21 -05:00
// Add services to the container.
2023-02-02 10:50:02 -05:00
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
2023-03-21 18:55:21 -05:00
#region Logging
// Add logging configuration
builder.Logging.ClearProviders();
builder.Logging.AddConsole();
builder.Logging.AddDebug();
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole().AddEventLog());
#warning Cuidado! NO cambiar nombre del proyecto! 19/03/23 -LM
string projectName = Assembly.GetEntryAssembly()?.GetName().Name ?? "MSAdminUsuarios";
var logger = loggerFactory.CreateLogger(projectName);
#endregion
#region Config: Base de Datos
2023-02-02 10:50:02 -05:00
// Cadena de Conexion a Bases de Datos
2023-03-21 18:55:21 -05:00
var ConString = builder.Configuration.GetSection("ConnectionStrings:ConString").Get<string>();
2023-02-02 10:50:02 -05:00
// Configuraci<63>n del DbContext
2023-02-02 10:50:02 -05:00
builder.Services.AddDbContext<ModelContext>(options =>
{
2023-03-21 18:55:21 -05:00
//IConfiguration configuration = builder.Configuration;
2023-02-02 10:50:02 -05:00
options.UseOracle(
2023-03-21 18:55:21 -05:00
ConString,
options =>
options.UseOracleSQLCompatibility("11")
2023-02-02 10:50:02 -05:00
);
});
2023-03-21 18:55:21 -05:00
#endregion
#region Config: RabbitMQ
//Get config desde appsettings.json
/*builder.Services.Configure<RabbitMQConfig>(builder.Configuration.GetSection("RabbitMQConfig"));
2023-03-21 18:55:21 -05:00
builder.Services.AddSingleton<IConnection>(sp =>
{
var config = sp.GetRequiredService<IOptions<RabbitMQConfig>>().Value;
var factory = new ConnectionFactory
{
HostName = config.HostName,
UserName = config.UserName,
2024-05-16 16:37:29 -05:00
Password = config.Password,
Port = config.Port,
2023-03-21 18:55:21 -05:00
};
return factory.CreateConnection();
});
builder.Services.AddScoped<IModel>(provider =>
{
// Creaci<63>n de channel, declaraci<63>n de queues y binding
2023-03-21 18:55:21 -05:00
return RabbitMQService.GetRabbitMQChannel(provider, projectName);
});*/
2023-03-21 18:55:21 -05:00
#endregion
#region Config: Cors
2023-02-02 10:50:02 -05:00
// Enable Cors
builder.Services.AddCors(options => {
options.AddPolicy(name: "widthoutCors",
builder => {
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
2023-03-21 18:55:21 -05:00
#endregion
#region Mapping / Build
2023-02-02 10:50:02 -05:00
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment() || app.Environment.IsProduction())
{
app.UseSwagger();
app.UseSwaggerUI();
app.UseCors("widthoutCors");
}
if(app.Environment.IsDevelopment())
{
Environment.SetEnvironmentVariable("Mode", "Dev");
} else
{
Environment.SetEnvironmentVariable("Mode", "Prod");
}
// app.UseHttpsRedirection();
var option = new RewriteOptions();
option.AddRedirect("^$", "swagger");
app.UseRewriter(option);
2023-02-02 10:50:02 -05:00
app.UseAuthorization();
app.MapControllers();
2023-03-21 18:55:21 -05:00
#endregion
/*using (var scope = app.Services.CreateScope())
2024-05-16 16:37:29 -05:00
{
// Inicializar el canal - Crea lo necesario en Rabbit antes de subscribirse
var channel = scope.ServiceProvider.GetRequiredService<RabbitMQ.Client.IModel>();
}*/
2023-03-21 18:55:21 -05:00
// Start and Subscribe to RabbitMQ event
RabbitMQService.ListenForIntegrationEvents(projectName, builder);
app.Run();