73 lines
2.1 KiB
C#
73 lines
2.1 KiB
C#
|
using Dipper.Alioth.Options;
|
||
|
using Microsoft.AspNetCore.Builder;
|
||
|
using Microsoft.AspNetCore.Http;
|
||
|
using Microsoft.AspNetCore.Mvc.ApplicationParts;
|
||
|
using Microsoft.Extensions.DependencyInjection;
|
||
|
using Microsoft.Extensions.Hosting;
|
||
|
|
||
|
namespace Dipper.Alioth.Web;
|
||
|
|
||
|
internal static class ServiceExtension
|
||
|
{
|
||
|
internal static WebApplicationBuilder AddStarApp(this WebApplicationBuilder builder, Action<StarOption> action)
|
||
|
{
|
||
|
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
|
||
|
|
||
|
var option = new StarOption();
|
||
|
|
||
|
action?.Invoke(option);
|
||
|
|
||
|
builder.Services.AddControllers(options =>
|
||
|
{
|
||
|
options.EnableEndpointRouting = false;
|
||
|
option.MvcOption?.Invoke(options);
|
||
|
})
|
||
|
.AddJsonOptions(options =>
|
||
|
{
|
||
|
options.JsonSerializerOptions.PropertyNamingPolicy = null;
|
||
|
option.JsonOption?.Invoke(options);
|
||
|
});
|
||
|
|
||
|
builder.Services.AddSession();
|
||
|
|
||
|
return builder;
|
||
|
}
|
||
|
|
||
|
internal static WebApplication UserStarApp(this WebApplication app)
|
||
|
{
|
||
|
if (app.Environment.IsDevelopment())
|
||
|
{
|
||
|
app.UseDeveloperExceptionPage();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
app.UseExceptionHandler("/?m=Error500");
|
||
|
}
|
||
|
|
||
|
app.UseStaticFiles();
|
||
|
app.UseHttpsRedirection();
|
||
|
app.UseRouting();
|
||
|
app.UseSession();
|
||
|
app.UseAuthorization();
|
||
|
app.MapControllers();
|
||
|
|
||
|
return app;
|
||
|
}
|
||
|
|
||
|
private static void AddFlexibleApi(IMvcBuilder builder, StarOption option)
|
||
|
{
|
||
|
builder.ConfigureApplicationPartManager(manager =>
|
||
|
{
|
||
|
manager.ApplicationParts.Add(new AssemblyPart(typeof(IService).Assembly));
|
||
|
|
||
|
foreach (var module in option.Modules)
|
||
|
{
|
||
|
module.Initialize();
|
||
|
var assembly = module.GetType().Assembly;
|
||
|
manager.ApplicationParts.Add(new AssemblyPart(assembly));
|
||
|
}
|
||
|
|
||
|
//manager.FeatureProviders.Add(new ApiFeatureProvider());
|
||
|
});
|
||
|
}
|
||
|
}
|