1
0
voyager-api/ScrapperAPI/Controllers/ScrapeController.cs

42 lines
1.1 KiB
C#

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<IActionResult> Start(int sessionId, CancellationToken ct)
{
await _coord.StartAsync(sessionId, ct);
return Accepted();
}
[HttpPost("stop")]
public async Task<IActionResult> Stop(int sessionId)
{
await _coord.StopAsync(sessionId);
return Accepted();
}
[HttpGet("status")]
public async Task<IActionResult> Status(int sessionId, CancellationToken ct)
{
var runtime = _coord.GetRuntimeStatus(sessionId);
var counts = await _queue.GetCountsAsync(sessionId, ct);
return Ok(new { runtime, counts });
}
}