add server status & capabilities
This commit is contained in:
41
Pilz.Net/Api/Server/ServerStatusHandler.cs
Normal file
41
Pilz.Net/Api/Server/ServerStatusHandler.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
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 : IApiHandlerInitializer
|
||||
{
|
||||
protected IApiServer? server;
|
||||
|
||||
public string Route { get; set; } = "/status";
|
||||
|
||||
public virtual void Initialize(IApiServer server)
|
||||
{
|
||||
this.server = server;
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user