First Commit

This commit is contained in:
Jorge Luis caudillo esparza
2026-05-09 16:36:57 -07:00
parent 96ad4c0d3e
commit d0c284d9c0
131 changed files with 4009 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
using ADS.Helpers.Middleware.ADSException;
using ADS.Helpers.Middleware.Http;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace ADS.Helpers.Middleware.ADSExtensions;
public static class AdsApiResponseExtensions
{
public static IServiceCollection AddAdsApiResponse(
this IServiceCollection services,
IConfiguration configuration)
{
// Leer configuración desde appsettings de la API
services.Configure<LoggingOptions>(
configuration.GetSection("LoggingOptions"));
services.AddSingleton<IAdsErrorLogger, FileAdsErrorLogger>();
services.AddControllers(o =>
{
o.Filters.Add<ApiResponseWrapFilter>();
});
return services;
}
public static IApplicationBuilder UseAdsApiResponse(this IApplicationBuilder app)
{
app.UseMiddleware<AdsExceptionMiddleware>();
return app;
}
}

View File

@@ -0,0 +1,76 @@
using ADS.Helpers.Middleware.Tenant;
using ADS.Helpers.Middleware.Logging;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using ADS.Helpers.MultiTenant.Abstractions;
using ADS.Helpers.MultiTenant.Resolvers;
using ADS.Helpers.MultiTenant.Context;
using ADS.Helpers.Base.Abstractions;
using ADS.Helpers.MultiTenant.Configuration;
using ADS.Helpers.MultiTenant.Stores;
using ADS.Helpers.Middleware.InternalUser;
namespace ADS.Helpers.Middleware.Extensions;
public static class AdsExtensions
{
// IServiceCollection extensions
public static IServiceCollection AddAdsLogging(this IServiceCollection services, IConfiguration configuration)
{
//services.AddLogging();
// Ejemplo si tenías esto:
services.AddSingleton<IAppLogger, DefaultAppLogger>();
return services;
}
public static IServiceCollection AddAdsMultiTenant(this IServiceCollection services, IConfiguration configuration)
{
// Aquí va lo que ya tengas para tenant: options, accessor, resolver, etc.
services.Configure<TenantOptions>(configuration.GetSection("MultiTenant"));
services.AddSingleton<ITenantContextAccessor, TenantContextAccessor>();
// services.AddSingleton<ITenantStore, InMemoryTenantStore>();// reemplazado por ConfigurationTenantStore
services.AddSingleton<ITenantStore, ConfigurationTenantStore>();
services.AddScoped<ITenantResolver, HeaderTenantResolver>();
return services;
}
public static IServiceCollection AddAdsMiddlewares(this IServiceCollection services, IConfiguration configuration)
{
// Si este método es solo un "orquestador" de otros registros:
services.AddAdsLogging(configuration);
services.AddAdsMultiTenant(configuration);
// Y aquí agregas otros (ExceptionHandling, CorrelationId, etc.)
return services;
}
// IApplicationBuilder extensions
public static IApplicationBuilder UseAdsTenant(this IApplicationBuilder app)
{
return app.UseMiddleware<TenantMiddleware>();
}
public static IApplicationBuilder UseAdsMiddlewares(this IApplicationBuilder app)
{
// Orden típico: errores/correlation/tenant/etc (según tu diseño)
app.UseAdsTenant();
return app;
}
public static IServiceCollection AddAdsInternalUser(this IServiceCollection services)
{
services.AddScoped<IInternalUserContextAccessor, InternalUserContextAccessor>();
return services;
}
public static IApplicationBuilder UseAdsInternalUser(this IApplicationBuilder app)
{
return app.UseMiddleware<InternalUserContextMiddleware>();
}
}