Removed unused middleware. Fixed plugin loading issues

This commit is contained in:
2025-04-15 12:19:32 +02:00
parent 0b0c9304b1
commit db7ac8d174
4 changed files with 35 additions and 92 deletions

View File

@@ -29,11 +29,14 @@ public class FrontendController : Controller
{
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);
var path = assembliesMap[assemblyName];
var absolutePath = Path.Combine(
Directory.GetCurrentDirectory(),
path
);
await Results.File(path).ExecuteAsync(HttpContext);
await Results.File(absolutePath).ExecuteAsync(HttpContext);
}
}

View File

@@ -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);
}
}
}

View File

@@ -8,17 +8,20 @@ public class BundleGenerationService : IHostedService
{
private readonly ILogger<BundleGenerationService> Logger;
private readonly IWebHostEnvironment HostEnvironment;
private readonly PluginService PluginService;
private readonly BundleService BundleService;
public BundleGenerationService(
ILogger<BundleGenerationService> logger,
IWebHostEnvironment hostEnvironment,
BundleService bundleService
BundleService bundleService,
PluginService pluginService
)
{
Logger = logger;
HostEnvironment = hostEnvironment;
BundleService = bundleService;
PluginService = pluginService;
}
private async Task Bundle(CancellationToken cancellationToken)
@@ -34,12 +37,17 @@ public class BundleGenerationService : IHostedService
if (fileInfo is NotFoundFileInfo || fileInfo.PhysicalPath == null)
{
Logger.LogWarning(
"Unable to find physical path for the requested css file '{file}'. Make sure its inside a wwwroot folder",
cssFile
);
fileInfo = PluginService.WwwRootFileProvider.GetFileInfo(cssFile);
continue;
if (fileInfo is NotFoundFileInfo || fileInfo.PhysicalPath == null)
{
Logger.LogWarning(
"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);
@@ -47,8 +55,9 @@ public class BundleGenerationService : IHostedService
physicalCssFiles.Add(fileInfo.PhysicalPath);
}
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");
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");
// TODO: Implement cache
@@ -57,6 +66,7 @@ public class BundleGenerationService : IHostedService
var bundleContent = await CreateCssBundle(physicalCssFiles);
Directory.CreateDirectory(PathBuilder.Dir("storage", "tmp"));
await File.WriteAllTextAsync(PathBuilder.File("storage", "tmp", "bundle.css"), bundleContent,
cancellationToken);

View File

@@ -236,7 +236,9 @@ public class Startup
{
try
{
PluginLoadContext.LoadFromAssemblyPath(assemblyFile);
PluginLoadContext.LoadFromAssemblyPath(
Path.Combine(Directory.GetCurrentDirectory(), assemblyFile)
);
}
catch (Exception e)
{