Files
Pilz/Pilz.Net/Api/Server/MaintenanceHandler.cs
2025-06-13 09:55:20 +02:00

49 lines
1.2 KiB
C#

using Pilz.Extensions.Reflection;
using Pilz.Net.Api.Messages;
using System.Diagnostics;
using System.Net;
namespace Pilz.Net.Api.Server;
public class MaintenanceHandler : IApiHandlerInitializer
{
public string Route { get; set; } = "/maintenance";
/// <summary>
/// Gets or sets the maintenance mode
/// </summary>
public bool MaintenanceEnabled { get; set; }
public void Initialize(IApiServer server)
{
server.OnCheckContext += Server_OnCheckContext;
server.RegisterHandler(GetType().GetMethod(nameof(GetMaintenance))!.CreateDelegate(this), new(Route, "GET"), Debugger.IsAttached);
}
public virtual ApiResult SetMaintenance(ApiRequestInfo req, bool enable)
{
MaintenanceEnabled = enable;
return ApiResult.Ok(new MaintenanceModeMessage
{
Enabled = MaintenanceEnabled,
});
}
public virtual ApiResult GetMaintenance(ApiRequestInfo req)
{
return ApiResult.Ok(new MaintenanceModeMessage
{
Enabled = MaintenanceEnabled,
});
}
private void Server_OnCheckContext(object sender, ApiContextEventArgs e)
{
if (MaintenanceEnabled)
{
// ...
}
}
}