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"; /// /// Gets or sets the maintenance mode /// 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) { // ... } } }