From 15f8baf54c164c84759001011be86ca7e680cfc9 Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 1 Apr 2026 11:52:07 +0200 Subject: [PATCH] Add WorkerController API to control background Worker service Introduced a new WorkerController with endpoints to start, stop, and restart the background Worker service via HTTP API. The controller uses dependency injection to locate the Worker instance and logs each operation. Also removed an unused Controllers folder reference from the project file. --- .../Controllers/WorkerController.cs | 44 +++++++++++++++++++ .../EnvelopeGenerator.ServiceHost.csproj | 4 -- 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 EnvelopeGenerator.ServiceHost/Controllers/WorkerController.cs diff --git a/EnvelopeGenerator.ServiceHost/Controllers/WorkerController.cs b/EnvelopeGenerator.ServiceHost/Controllers/WorkerController.cs new file mode 100644 index 00000000..c3b97eb9 --- /dev/null +++ b/EnvelopeGenerator.ServiceHost/Controllers/WorkerController.cs @@ -0,0 +1,44 @@ +using Microsoft.AspNetCore.Mvc; + +namespace EnvelopeGenerator.ServiceHost.Controllers; + +[Route("api/[controller]")] +[ApiController] +public class WorkerController(IEnumerable hostedServices, ILogger logger) : ControllerBase +{ + private Worker? Worker => hostedServices.OfType().FirstOrDefault(); + + [HttpPost("stop")] + public async Task Stop(CancellationToken cancel) + { + if (Worker is null) + return NotFound(); + + logger.LogInformation("Stopping Worker via API request."); + await Worker.StopAsync(cancel); + return Ok(); + } + + [HttpPost("start")] + public async Task Start(CancellationToken cancel) + { + if (Worker is null) + return NotFound(); + + logger.LogInformation("Starting Worker via API request."); + await Worker.StartAsync(cancel); + return Ok(); + } + + [HttpPost("restart")] + public async Task Restart(CancellationToken cancel) + { + if (Worker is null) + return NotFound(); + + logger.LogInformation("Restarting Worker via API request."); + await Worker.StopAsync(cancel); + await Worker.StartAsync(cancel); + return Ok(); + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.ServiceHost/EnvelopeGenerator.ServiceHost.csproj b/EnvelopeGenerator.ServiceHost/EnvelopeGenerator.ServiceHost.csproj index 54dfab4b..51b34fee 100644 --- a/EnvelopeGenerator.ServiceHost/EnvelopeGenerator.ServiceHost.csproj +++ b/EnvelopeGenerator.ServiceHost/EnvelopeGenerator.ServiceHost.csproj @@ -26,10 +26,6 @@ - - - - Component