Removed unused middleware. Fixed plugin loading issues
This commit is contained in:
@@ -29,11 +29,14 @@ public class FrontendController : Controller
|
|||||||
{
|
{
|
||||||
var assembliesMap = PluginService.GetAssemblies("client");
|
var assembliesMap = PluginService.GetAssemblies("client");
|
||||||
|
|
||||||
if (assembliesMap.ContainsKey(assemblyName))
|
if (!assembliesMap.TryGetValue(assemblyName, out var path))
|
||||||
throw new HttpApiException("The requested assembly could not be found", 404);
|
throw new HttpApiException("The requested assembly could not be found", 404);
|
||||||
|
|
||||||
var path = assembliesMap[assemblyName];
|
var absolutePath = Path.Combine(
|
||||||
|
Directory.GetCurrentDirectory(),
|
||||||
|
path
|
||||||
|
);
|
||||||
|
|
||||||
await Results.File(path).ExecuteAsync(HttpContext);
|
await Results.File(absolutePath).ExecuteAsync(HttpContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
using System.Diagnostics;
|
|
||||||
using System.Net.Sockets;
|
|
||||||
using MoonCore.Exceptions;
|
|
||||||
|
|
||||||
namespace Moonlight.ApiServer.Http.Middleware;
|
|
||||||
|
|
||||||
public class ApiErrorMiddleware
|
|
||||||
{
|
|
||||||
private readonly RequestDelegate Next;
|
|
||||||
|
|
||||||
public ApiErrorMiddleware(RequestDelegate next)
|
|
||||||
{
|
|
||||||
Next = next;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task Invoke(HttpContext context)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
await Next(context);
|
|
||||||
}
|
|
||||||
catch (HttpApiException httpApiException)
|
|
||||||
{
|
|
||||||
await Results.Problem(
|
|
||||||
title: httpApiException.Title,
|
|
||||||
detail: httpApiException.Detail,
|
|
||||||
statusCode: httpApiException.Status,
|
|
||||||
type: "moonlight/general-api-error"
|
|
||||||
).ExecuteAsync(context);
|
|
||||||
}
|
|
||||||
catch (HttpRequestException e)
|
|
||||||
{
|
|
||||||
var logger = context.RequestServices.GetRequiredService<ILogger<ApiErrorMiddleware>>();
|
|
||||||
|
|
||||||
if (e.InnerException is SocketException)
|
|
||||||
{
|
|
||||||
logger.LogCritical("An unhandled socket exception occured. [{method}] {path}: {e}", context.Request.Method, context.Request.Path, e);
|
|
||||||
|
|
||||||
await Results.Problem(
|
|
||||||
title: "An socket exception occured on the api server",
|
|
||||||
detail: "Check the api server logs for more details",
|
|
||||||
statusCode: 502,
|
|
||||||
type: "moonlight/remote-api-connection-error"
|
|
||||||
).ExecuteAsync(context);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.LogCritical("An unhandled exception occured. [{method}] {path}: {e}", context.Request.Method, context.Request.Path, e.Demystify());
|
|
||||||
|
|
||||||
await Results.Problem(
|
|
||||||
title: "An http request exception occured on the api server",
|
|
||||||
detail: "Check the api server logs for more details",
|
|
||||||
statusCode: 500,
|
|
||||||
type: "moonlight/remote-api-request-error"
|
|
||||||
).ExecuteAsync(context);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
var logger = context.RequestServices.GetRequiredService<ILogger<ApiErrorMiddleware>>();
|
|
||||||
|
|
||||||
logger.LogCritical("An unhandled exception occured. [{method}] {path}: {e}", context.Request.Method, context.Request.Path, e);
|
|
||||||
|
|
||||||
await Results.Problem(
|
|
||||||
title: "An unhanded exception occured on the api server",
|
|
||||||
detail: "Check the api server logs for more details",
|
|
||||||
statusCode: 500,
|
|
||||||
type: "moonlight/critical-api-error"
|
|
||||||
).ExecuteAsync(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -8,17 +8,20 @@ public class BundleGenerationService : IHostedService
|
|||||||
{
|
{
|
||||||
private readonly ILogger<BundleGenerationService> Logger;
|
private readonly ILogger<BundleGenerationService> Logger;
|
||||||
private readonly IWebHostEnvironment HostEnvironment;
|
private readonly IWebHostEnvironment HostEnvironment;
|
||||||
|
private readonly PluginService PluginService;
|
||||||
private readonly BundleService BundleService;
|
private readonly BundleService BundleService;
|
||||||
|
|
||||||
public BundleGenerationService(
|
public BundleGenerationService(
|
||||||
ILogger<BundleGenerationService> logger,
|
ILogger<BundleGenerationService> logger,
|
||||||
IWebHostEnvironment hostEnvironment,
|
IWebHostEnvironment hostEnvironment,
|
||||||
BundleService bundleService
|
BundleService bundleService,
|
||||||
|
PluginService pluginService
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Logger = logger;
|
Logger = logger;
|
||||||
HostEnvironment = hostEnvironment;
|
HostEnvironment = hostEnvironment;
|
||||||
BundleService = bundleService;
|
BundleService = bundleService;
|
||||||
|
PluginService = pluginService;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task Bundle(CancellationToken cancellationToken)
|
private async Task Bundle(CancellationToken cancellationToken)
|
||||||
@@ -34,29 +37,36 @@ public class BundleGenerationService : IHostedService
|
|||||||
|
|
||||||
if (fileInfo is NotFoundFileInfo || fileInfo.PhysicalPath == null)
|
if (fileInfo is NotFoundFileInfo || fileInfo.PhysicalPath == null)
|
||||||
{
|
{
|
||||||
Logger.LogWarning(
|
fileInfo = PluginService.WwwRootFileProvider.GetFileInfo(cssFile);
|
||||||
"Unable to find physical path for the requested css file '{file}'. Make sure its inside a wwwroot folder",
|
|
||||||
cssFile
|
if (fileInfo is NotFoundFileInfo || fileInfo.PhysicalPath == null)
|
||||||
);
|
{
|
||||||
|
Logger.LogWarning(
|
||||||
continue;
|
"Unable to find physical path for the requested css file '{file}'. Make sure its inside a wwwroot folder",
|
||||||
|
cssFile
|
||||||
|
);
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.LogTrace("Discovered css file '{path}' at '{physicalPath}'", cssFile, fileInfo.PhysicalPath);
|
Logger.LogTrace("Discovered css file '{path}' at '{physicalPath}'", cssFile, fileInfo.PhysicalPath);
|
||||||
|
|
||||||
physicalCssFiles.Add(fileInfo.PhysicalPath);
|
physicalCssFiles.Add(fileInfo.PhysicalPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(physicalCssFiles.Count == 0)
|
if (physicalCssFiles.Count == 0)
|
||||||
Logger.LogWarning("No physical paths to css files loaded. The generated bundle will be empty. Unless this is intended by you this is a bug");
|
Logger.LogWarning(
|
||||||
|
"No physical paths to css files loaded. The generated bundle will be empty. Unless this is intended by you this is a bug");
|
||||||
|
|
||||||
// TODO: Implement cache
|
// TODO: Implement cache
|
||||||
|
|
||||||
// TODO: File system watcher for development
|
// TODO: File system watcher for development
|
||||||
|
|
||||||
var bundleContent = await CreateCssBundle(physicalCssFiles);
|
var bundleContent = await CreateCssBundle(physicalCssFiles);
|
||||||
|
|
||||||
Directory.CreateDirectory(PathBuilder.Dir("storage", "tmp"));
|
Directory.CreateDirectory(PathBuilder.Dir("storage", "tmp"));
|
||||||
|
|
||||||
await File.WriteAllTextAsync(PathBuilder.File("storage", "tmp", "bundle.css"), bundleContent,
|
await File.WriteAllTextAsync(PathBuilder.File("storage", "tmp", "bundle.css"), bundleContent,
|
||||||
cancellationToken);
|
cancellationToken);
|
||||||
|
|
||||||
@@ -83,7 +93,7 @@ public class BundleGenerationService : IHostedService
|
|||||||
{
|
{
|
||||||
var fileContent = await File.ReadAllTextAsync(physicalPath);
|
var fileContent = await File.ReadAllTextAsync(physicalPath);
|
||||||
var stylesheet = await parser.ParseAsync(fileContent);
|
var stylesheet = await parser.ParseAsync(fileContent);
|
||||||
|
|
||||||
// Check if it's the first stylesheet we are loading
|
// Check if it's the first stylesheet we are loading
|
||||||
if (mainStylesheet == null || content == null)
|
if (mainStylesheet == null || content == null)
|
||||||
{
|
{
|
||||||
@@ -106,7 +116,7 @@ public class BundleGenerationService : IHostedService
|
|||||||
Logger.LogError("An unable to delegate main stylesheet. Did every load attempt of an stylesheet fail?");
|
Logger.LogError("An unable to delegate main stylesheet. Did every load attempt of an stylesheet fail?");
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process stylesheets against the main one
|
// Process stylesheets against the main one
|
||||||
foreach (var stylesheet in additionalStyleSheets)
|
foreach (var stylesheet in additionalStyleSheets)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -236,7 +236,9 @@ public class Startup
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PluginLoadContext.LoadFromAssemblyPath(assemblyFile);
|
PluginLoadContext.LoadFromAssemblyPath(
|
||||||
|
Path.Combine(Directory.GetCurrentDirectory(), assemblyFile)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -647,7 +649,7 @@ public class Startup
|
|||||||
"Hangfire.Server.BackgroundServerProcess",
|
"Hangfire.Server.BackgroundServerProcess",
|
||||||
LogLevel.Warning
|
LogLevel.Warning
|
||||||
);
|
);
|
||||||
|
|
||||||
WebApplicationBuilder.Logging.AddFilter(
|
WebApplicationBuilder.Logging.AddFilter(
|
||||||
"Hangfire.BackgroundJobServer",
|
"Hangfire.BackgroundJobServer",
|
||||||
LogLevel.Warning
|
LogLevel.Warning
|
||||||
@@ -660,7 +662,7 @@ public class Startup
|
|||||||
{
|
{
|
||||||
if (WebApplication.Environment.IsDevelopment())
|
if (WebApplication.Environment.IsDevelopment())
|
||||||
WebApplication.UseHangfireDashboard();
|
WebApplication.UseHangfireDashboard();
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user