42 lines
1.1 KiB
C#
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 });
|
|
}
|
|
}
|