diff --git a/Pilz.Net/Api/Messages/MaintenanceModeMessage.cs b/Pilz.Net/Api/Messages/MaintenanceModeMessage.cs new file mode 100644 index 0000000..bf64c2a --- /dev/null +++ b/Pilz.Net/Api/Messages/MaintenanceModeMessage.cs @@ -0,0 +1,6 @@ +namespace Pilz.Net.Api.Messages; + +public class MaintenanceModeMessage : ApiMessage +{ + public bool Enabled { get; set; } +} diff --git a/Pilz.Net/Api/Server/MaintenanceHandler.cs b/Pilz.Net/Api/Server/MaintenanceHandler.cs new file mode 100644 index 0000000..4e8c5e6 --- /dev/null +++ b/Pilz.Net/Api/Server/MaintenanceHandler.cs @@ -0,0 +1,48 @@ +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"; + + /// + /// Gets or sets the maintenance mode + /// + 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) + { + + // ... + } + } +}