48 lines
1.2 KiB
C#
48 lines
1.2 KiB
C#
using Pilz.Extensions.Reflection;
|
|
using Pilz.Net.Api.Messages;
|
|
using System.Diagnostics;
|
|
|
|
namespace Pilz.Net.Api.Server;
|
|
|
|
public class MaintenanceHandler(IApiServer server) : IApiHandlerInitializer
|
|
{
|
|
public string Route { get; set; } = "/maintenance";
|
|
|
|
/// <summary>
|
|
/// Gets or sets the maintenance mode
|
|
/// </summary>
|
|
public bool MaintenanceEnabled { get; set; }
|
|
|
|
public void Initialize()
|
|
{
|
|
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)
|
|
{
|
|
|
|
// ...
|
|
}
|
|
}
|
|
}
|