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(); } }