Started adding asset api/auto import

This commit is contained in:
Masu-Baumgartner
2024-11-26 17:33:51 +01:00
parent 23a74bdfc6
commit bc737c830f
7 changed files with 176 additions and 29 deletions

View File

@@ -3,6 +3,7 @@ using Microsoft.Extensions.Caching.Memory;
using MoonCore.Exceptions;
using MoonCore.Models;
using Moonlight.ApiServer.Services;
using Moonlight.Shared.Http.Responses.PluginsStream;
namespace Moonlight.ApiServer.Http.Controllers;
@@ -22,36 +23,13 @@ public class PluginsStreamController : Controller
[HttpGet]
public Task<HostedPluginsManifest> GetManifest()
{
var assembliesMap = Cache.GetOrCreate("clientPluginAssemblies", entry =>
{
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(15);
return PluginService.GetAssemblies("client");
})!;
var entrypoints = Cache.GetOrCreate("clientPluginEntrypoints", entry =>
{
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(15);
return PluginService.GetEntrypoints("client");
})!;
return Task.FromResult(new HostedPluginsManifest()
{
Assemblies = assembliesMap.Keys.ToArray(),
Entrypoints = entrypoints
});
return Task.FromResult(PluginService.HostedPluginsManifest);
}
[HttpGet("stream")]
public async Task GetAssembly([FromQuery(Name = "assembly")] string assembly)
{
var assembliesMap = Cache.GetOrCreate("clientPluginAssemblies", entry =>
{
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(15);
return PluginService.GetAssemblies("client");
})!;
var assembliesMap = PluginService.AssemblyMap;
if (assembliesMap.ContainsKey(assembly))
throw new HttpApiException("The requested assembly could not be found", 404);
@@ -60,4 +38,10 @@ public class PluginsStreamController : Controller
await Results.File(path).ExecuteAsync(HttpContext);
}
[HttpGet("assets")]
public Task<PluginsAssetManifest> GetAssetManifest()
{
return Task.FromResult(PluginService.PluginsAssetManifest);
}
}