39 lines
1.2 KiB
C#
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();
|
|
}
|
|
}
|