using Microsoft.AspNetCore.Mvc; using ScrapperAPI.Interfaces; namespace ScrapperAPI.Controllers; [ApiController] [Route("sessions/{sessionId:int}/scrap")] public sealed class ScrapeController : ControllerBase { private readonly IScrapeCoordinator _coord; private readonly IQueueRepository _queue; public ScrapeController(IScrapeCoordinator coord, IQueueRepository queue) { _coord = coord; _queue = queue; } [HttpPost("start")] public async Task Start(int sessionId, CancellationToken ct) { await _coord.StartAsync(sessionId, ct); return Accepted(); } [HttpPost("stop")] public async Task Stop(int sessionId) { await _coord.StopAsync(sessionId); return Accepted(); } [HttpGet("status")] public async Task Status(int sessionId, CancellationToken ct) { var runtime = _coord.GetRuntimeStatus(sessionId); var counts = await _queue.GetCountsAsync(sessionId, ct); return Ok(new { runtime, counts }); } }