diff --git a/Pilz.Net/Api/ApiContextEventArgs.cs b/Pilz.Net/Api/ApiContextEventArgs.cs new file mode 100644 index 0000000..1b75c45 --- /dev/null +++ b/Pilz.Net/Api/ApiContextEventArgs.cs @@ -0,0 +1,8 @@ +using System.Net; + +namespace Pilz.Net.Api; + +public class ApiContextEventArgs(HttpListenerContext context) : EventArgs +{ + public HttpListenerContext Context { get; } = context; +} diff --git a/Pilz.Net/Api/ApiServer.cs b/Pilz.Net/Api/ApiServer.cs index 8888099..176ffb2 100644 --- a/Pilz.Net/Api/ApiServer.cs +++ b/Pilz.Net/Api/ApiServer.cs @@ -13,6 +13,8 @@ public class ApiServer(string apiUrl) : IApiServer protected readonly HttpListener httpListener = new(); public event OnCheckAuthenticationEventHandler? OnCheckAuthentication; + public event OnCheckContextEventHandler? OnCheckContext; + public event OnCheckContextEventHandler? OnCheckContextCompleted; protected record PrivateApiResult(ApiResult Original, string? ResultJson); @@ -104,6 +106,7 @@ public class ApiServer(string apiUrl) : IApiServer Receive(); // Check context + OnCheckContext?.Invoke(this, new(context)); try { CheckContext(context); @@ -114,6 +117,10 @@ public class ApiServer(string apiUrl) : IApiServer if (DebugMode) throw; } + finally + { + OnCheckContextCompleted?.Invoke(this, new(context)); + } // Listen for new request if (!AllowMultipleRequests) diff --git a/Pilz.Net/Api/IApiServer.cs b/Pilz.Net/Api/IApiServer.cs index d24fdd3..f1569d7 100644 --- a/Pilz.Net/Api/IApiServer.cs +++ b/Pilz.Net/Api/IApiServer.cs @@ -5,8 +5,11 @@ namespace Pilz.Net.Api; public interface IApiServer { public delegate void OnCheckAuthenticationEventHandler(object sender, ApiAuthCheckEventArgs e); + public delegate void OnCheckContextEventHandler(object sender, ApiContextEventArgs e); event OnCheckAuthenticationEventHandler? OnCheckAuthentication; + event OnCheckContextEventHandler OnCheckContext; + event OnCheckContextEventHandler OnCheckContextCompleted; string ApiUrl { get; }