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