Add CancellationToken support to OutResController methods

Updated `Get` methods in `OutResController` to include a
`CancellationToken` parameter, enabling support for request
cancellation during asynchronous operations. Updated all
`mediator.Send` calls to propagate the `CancellationToken`.

Simplified the "fake/{actionId}" route by removing the explicit
assignment of `HttpContext.Response.ContentType` for non-
`ResultType.Full` cases.
This commit is contained in:
tekh 2025-12-04 14:01:47 +01:00
parent b8074cfaf1
commit 9901726f5a

View File

@ -2,7 +2,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using ReC.API.Extensions; using ReC.API.Extensions;
using ReC.Application.OutResults.Queries; using ReC.Application.OutResults.Queries;
using System.Net.Mime;
namespace ReC.API.Controllers; namespace ReC.API.Controllers;
@ -11,25 +10,22 @@ namespace ReC.API.Controllers;
public class OutResController(IMediator mediator, IConfiguration config) : ControllerBase public class OutResController(IMediator mediator, IConfiguration config) : ControllerBase
{ {
[HttpGet] [HttpGet]
public async Task<IActionResult> Get([FromQuery] ReadOutResQuery query) => Ok(await mediator.Send(query)); public async Task<IActionResult> Get([FromQuery] ReadOutResQuery query, CancellationToken cancel) => Ok(await mediator.Send(query, cancel));
[HttpGet("fake")] [HttpGet("fake")]
public async Task<IActionResult> Get() => Ok(await mediator.Send(new ReadOutResQuery() public async Task<IActionResult> Get(CancellationToken cancel) => Ok(await mediator.Send(new ReadOutResQuery()
{ {
ProfileId = config.GetFakeProfileId() ProfileId = config.GetFakeProfileId()
})); }, cancel));
[HttpGet("fake/{actionId}")] [HttpGet("fake/{actionId}")]
public async Task<IActionResult> Get([FromRoute] long actionId, ResultType resultType = ResultType.Full) public async Task<IActionResult> Get([FromRoute] long actionId, CancellationToken cancel, ResultType resultType = ResultType.Full)
{ {
var res = (await mediator.Send(new ReadOutResQuery() var res = (await mediator.Send(new ReadOutResQuery()
{ {
ProfileId = config.GetFakeProfileId(), ProfileId = config.GetFakeProfileId(),
ActionId = actionId ActionId = actionId
})).First(); }, cancel)).First();
if (resultType is not ResultType.Full)
HttpContext.Response.ContentType = MediaTypeNames.Application.Json;
return resultType switch return resultType switch
{ {