using Pilz.Extensions.Reflection; using Pilz.Net.Api.Messages; using System.Diagnostics; namespace Pilz.Net.Api.Server; public class ServerCapabilitiesHandler : IApiHandlerInitializer { protected IApiServer? server; public string Route { get; set; } = "/capabilities"; public virtual void Initialize(IApiServer server) { this.server = server; server.RegisterHandler(GetType().GetMethod(nameof(GetCapabilities))!.CreateDelegate(this), new(Route, "GET"), Debugger.IsAttached); } public virtual ApiResult GetCapabilities(ApiRequestInfo req) { return ApiResult.Ok(BuildMessage(req)); } protected virtual ApiMessage? BuildMessage(ApiRequestInfo req) { return new ServerCapabilitiesMessage(server?.GetEndpoints() ?? []); } }