using System; using System.Linq; using System.Reflection; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Oqtane.Infrastructure; namespace Oqtane.Extensions { public static class ApplicationBuilderExtensions { public static IApplicationBuilder ConfigureOqtaneAssemblies(this IApplicationBuilder app, IWebHostEnvironment env) { var startUps = AppDomain.CurrentDomain .GetOqtaneAssemblies() .SelectMany(x => x.GetInstances()); foreach (var startup in startUps) { startup.Configure(app, env); } return app; } public static IApplicationBuilder UseOqtaneLocalization(this IApplicationBuilder app) { var localizationManager = app.ApplicationServices.GetService(); var defaultCulture = localizationManager.GetDefaultCulture(); var supportedCultures = localizationManager.GetSupportedCultures(); app.UseRequestLocalization(options => { options.SetDefaultCulture(defaultCulture) .AddSupportedCultures(supportedCultures) .AddSupportedUICultures(supportedCultures); foreach(var culture in options.SupportedCultures) { if (culture.TextInfo.IsRightToLeft) { RightToLeftCulture.ResolveFormat(culture); } } }); return app; } public static IApplicationBuilder UseTenantResolution(this IApplicationBuilder builder) => builder.UseMiddleware(); public static IApplicationBuilder UseJwtAuthorization(this IApplicationBuilder builder) => builder.UseMiddleware(); public static IApplicationBuilder UseExceptionMiddleWare(this IApplicationBuilder builder) => builder.UseMiddleware(); } }