Files
Pilz/Pilz.Net/Api/Server/ServerStatusHandler.cs
2025-10-09 07:29:35 +02:00

39 lines
1.2 KiB
C#

using Pilz.Extensions;
using Pilz.Extensions.Reflection;
using Pilz.Net.Api.Messages;
using System.Diagnostics;
using System.Reflection;
namespace Pilz.Net.Api.Server;
public class ServerStatusHandler(IApiServer server) : IApiHandlerInitializer
{
public string Route { get; set; } = "/status";
public virtual void Initialize()
{
server.RegisterHandler(GetType().GetMethod(nameof(GetStatus))!.CreateDelegate(this), new(Route, "GET"), Debugger.IsAttached);
}
public virtual ApiResult GetStatus(ApiRequestInfo req)
{
var msg = BuildMessage(req);
if (server is ApiServer apiServer && msg is ServerStatusMessage message)
{
message.AppVersion ??= Assembly.GetEntryAssembly()?.GetAppVersion();
message.ApiVersion = apiServer.ApiVersion;
message.EndpointsCount = apiServer.HandlersCount;
message.DataManagersCount = apiServer.ManagersCount;
message.RestartAttempts = apiServer.RestartAttempts;
}
return ApiResult.Ok(msg);
}
protected virtual ApiMessage? BuildMessage(ApiRequestInfo req)
{
return new ServerStatusMessage();
}
}