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");
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -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 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);
|
||||
|
||||
|
||||
@@ -236,7 +236,9 @@ public class Startup
|
||||
{
|
||||
try
|
||||
{
|
||||
PluginLoadContext.LoadFromAssemblyPath(assemblyFile);
|
||||
PluginLoadContext.LoadFromAssemblyPath(
|
||||
Path.Combine(Directory.GetCurrentDirectory(), assemblyFile)
|
||||
);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user