Implemented plugin loading via di on the api server. Fixed plugin loading in the client
This commit is contained in:
@@ -1,46 +0,0 @@
|
||||
using Microsoft.OpenApi.Models;
|
||||
using MoonCore.Services;
|
||||
using Moonlight.ApiServer.Configuration;
|
||||
using Moonlight.ApiServer.Interfaces.Startup;
|
||||
|
||||
namespace Moonlight.ApiServer.Implementations.Startup;
|
||||
|
||||
public class ApiDocsStartup : IAppStartup, IEndpointStartup
|
||||
{
|
||||
private readonly ILogger<ApiDocsStartup> Logger;
|
||||
private readonly AppConfiguration AppConfiguration;
|
||||
|
||||
public ApiDocsStartup(ILogger<ApiDocsStartup> logger, AppConfiguration appConfiguration)
|
||||
{
|
||||
Logger = logger;
|
||||
AppConfiguration = appConfiguration;
|
||||
}
|
||||
|
||||
public Task BuildApp(IHostApplicationBuilder builder)
|
||||
{
|
||||
if(!AppConfiguration.Development.EnableApiDocs)
|
||||
return Task.CompletedTask;
|
||||
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
|
||||
// Configure swagger api specification generator and set the document title for the api docs to use
|
||||
builder.Services.AddSwaggerGen(options => options.SwaggerDoc("main", new OpenApiInfo()
|
||||
{
|
||||
Title = "Moonlight API"
|
||||
}));
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task ConfigureApp(IApplicationBuilder app) => Task.CompletedTask;
|
||||
|
||||
public Task ConfigureEndpoints(IEndpointRouteBuilder routeBuilder)
|
||||
{
|
||||
if(!AppConfiguration.Development.EnableApiDocs)
|
||||
return Task.CompletedTask;
|
||||
|
||||
routeBuilder.MapSwagger("/api/swagger/{documentName}");
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
using Moonlight.ApiServer.Interfaces.Startup;
|
||||
using Moonlight.ApiServer.Services;
|
||||
|
||||
namespace Moonlight.ApiServer.Implementations.Startup;
|
||||
|
||||
public class CoreAssetStartup : IAppStartup
|
||||
{
|
||||
private readonly BundleService BundleService;
|
||||
|
||||
public CoreAssetStartup(BundleService bundleService)
|
||||
{
|
||||
BundleService = bundleService;
|
||||
}
|
||||
|
||||
public Task BuildApp(IHostApplicationBuilder builder)
|
||||
{
|
||||
BundleService.BundleCss("css/core.min.css");
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task ConfigureApp(IApplicationBuilder app)
|
||||
=> Task.CompletedTask;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
using Moonlight.ApiServer.Database;
|
||||
using Moonlight.ApiServer.Helpers;
|
||||
using Moonlight.ApiServer.Interfaces.Startup;
|
||||
|
||||
namespace Moonlight.ApiServer.Implementations.Startup;
|
||||
|
||||
public class CoreDatabaseStartup : IDatabaseStartup
|
||||
{
|
||||
public Task ConfigureDatabase(DatabaseContextCollection collection)
|
||||
{
|
||||
collection.Add<CoreDataContext>();
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
66
Moonlight.ApiServer/Implementations/Startup/CoreStartup.cs
Normal file
66
Moonlight.ApiServer/Implementations/Startup/CoreStartup.cs
Normal file
@@ -0,0 +1,66 @@
|
||||
using Microsoft.OpenApi.Models;
|
||||
using Moonlight.ApiServer.Configuration;
|
||||
using Moonlight.ApiServer.Database;
|
||||
using Moonlight.ApiServer.Helpers;
|
||||
using Moonlight.ApiServer.Interfaces.Startup;
|
||||
using Moonlight.ApiServer.Services;
|
||||
|
||||
namespace Moonlight.ApiServer.Implementations.Startup;
|
||||
|
||||
public class CoreStartup : IPluginStartup
|
||||
{
|
||||
private readonly AppConfiguration Configuration;
|
||||
private readonly BundleService BundleService;
|
||||
|
||||
public CoreStartup(AppConfiguration configuration, BundleService bundleService)
|
||||
{
|
||||
Configuration = configuration;
|
||||
BundleService = bundleService;
|
||||
}
|
||||
|
||||
public Task BuildApplication(IHostApplicationBuilder builder)
|
||||
{
|
||||
#region Api Docs
|
||||
|
||||
if (Configuration.Development.EnableApiDocs)
|
||||
{
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
|
||||
// Configure swagger api specification generator and set the document title for the api docs to use
|
||||
builder.Services.AddSwaggerGen(options => options.SwaggerDoc("main", new OpenApiInfo()
|
||||
{
|
||||
Title = "Moonlight API"
|
||||
}));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Assets
|
||||
|
||||
BundleService.BundleCss("css/core.min.css");
|
||||
|
||||
#endregion
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task ConfigureApplication(IApplicationBuilder app)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task ConfigureDatabase(DatabaseContextCollection collection)
|
||||
{
|
||||
collection.Add<CoreDataContext>();
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task ConfigureEndpoints(IEndpointRouteBuilder routeBuilder)
|
||||
{
|
||||
if(Configuration.Development.EnableApiDocs)
|
||||
routeBuilder.MapSwagger("/api/swagger/{documentName}");
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user