fixes for capabilities

This commit is contained in:
Pilzinsel64
2025-06-13 10:26:33 +02:00
parent b9e633a0ff
commit d7e592180b
4 changed files with 7 additions and 14 deletions

View File

@@ -183,13 +183,9 @@ public class ApiServer : IApiServer
semaphore.Release();
}
public virtual IEnumerable<string> GetEndpoints()
public virtual Dictionary<string, string[]> GetEndpoints()
{
return handlers.SelectMany(n => n.Attribute.Methods.Select(m => new
{
n.Attribute.Route,
Method = m,
})).OrderBy(n => n.Route).ThenBy(n => n.Method).Select(n => $"{n.Method} {n.Route}");
return handlers.GroupBy(n => n.Attribute.Route).ToDictionary(n => n.Key, n => n.SelectMany(n => n.Attribute.Methods).ToArray());
}
public virtual void RegisterHandler<T>(T instance) where T : class

View File

@@ -27,7 +27,7 @@ public interface IApiServer
void RegisterHandler(Delegate handler);
void RegisterHandler(Delegate handler, bool throwOnError);
void RegisterHandler(Delegate handler, ApiMessageHandlerAttribute attribute, bool throwOnError);
IEnumerable<string> GetEndpoints();
Dictionary<string, string[]> GetEndpoints();
void Stop(bool graceful);
void Restart(bool graceful);
}

View File

@@ -1,6 +1,6 @@
namespace Pilz.Net.Api.Messages;
public class ServerCapabilitiesMessage : ApiMessage
public class ServerCapabilitiesMessage(Dictionary<string, string[]> endpoints) : ApiMessage
{
public List<string> Endpoints { get; } = [];
public Dictionary<string, string[]> Endpoints { get; } = endpoints;
}

View File

@@ -18,14 +18,11 @@ public class ServerCapabilitiesHandler : IApiHandlerInitializer
public virtual ApiResult GetCapabilities(ApiRequestInfo req)
{
var msg = BuildMessage(req);
if (server is ServerCapabilitiesMessage message)
message.Endpoints.AddRange(server.GetEndpoints());
return ApiResult.Ok(msg);
return ApiResult.Ok(BuildMessage(req));
}
protected virtual ApiMessage? BuildMessage(ApiRequestInfo req)
{
return new ServerCapabilitiesMessage();
return new ServerCapabilitiesMessage(server?.GetEndpoints() ?? []);
}
}