using AsbCloudApp.Data; using AsbCloudInfrastructure.Background; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace AsbCloudWebApi.Controllers { [Route("api/[controller]")] [Authorize] [ApiController] public class PeriodicBackgroundWorkerController : ControllerBase { private readonly PeriodicBackgroundWorker worker; public PeriodicBackgroundWorkerController(PeriodicBackgroundWorker worker) { this.worker = worker; } [HttpGet] public IActionResult GetAll() { var result = new { currentWork = (BackgroundWorkDto?)worker.CurrentWork, worker.MainLoopLastException, works = worker.Works.Select(work => (BackgroundWorkDto)work.Work), }; return Ok(result); } [HttpPost("restart"), Obsolete("temporary method")] public async Task RestartAsync(CancellationToken token) { await worker.StopAsync(token); await worker.StartAsync(token); return Ok(); } } }