Add new endpoint and improve exception handling

Removed the `asByte` parameter from XML documentation in `DocumentController.cs`, indicating the method no longer supports byte array returns. Added a new HTTP POST endpoint `CloseAsync` in `WorkflowsController.cs`, which is currently not implemented and throws a `NotImplementedException`. Enhanced `ExceptionHandlingMiddleware.cs` to handle `NotImplementedException` by logging a warning and returning a `501 Not Implemented` response in a problem details format.
This commit is contained in:
2026-10-31 21:25:49 +01:00
parent b35017fddc
commit 1a6baef807
3 changed files with 32 additions and 1 deletions

View File

@@ -18,7 +18,6 @@ public sealed class DocumentController(ISender sender) : ControllerBase
/// <param name="id">Document identifier.</param>
/// <param name="userId">User identifier.</param>
/// <param name="processId">Process identifier.</param>
/// <param name="asByte">Return document as byte array.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Document response envelope grouped by source.</returns>
[HttpGet("{id:int}")]

View File

@@ -27,4 +27,20 @@ public sealed class WorkflowsController(ISender sender) : ControllerBase
{
return Ok(await sender.Send(new GetWorkflowsQuery(wisagId), cancellationToken));
}
/// <summary>
///
/// </summary>
/// <param name="wisagId"></param>
/// <param name="source"></param>
/// <param name="processId"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
[HttpPost("{wisagId:int}/{source}/{processId:long}/closing")]
[ProducesResponseType(StatusCodes.Status501NotImplemented)]
public Task<ActionResult<JsonElement>> CloseAsync([FromRoute] int wisagId, [FromRoute] string source, [FromRoute] long processId, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
}

View File

@@ -63,6 +63,22 @@ public sealed class ExceptionHandlingMiddleware(RequestDelegate next, ILogger<Ex
context.Response.ContentType = "application/problem+json";
await context.Response.WriteAsync(JsonSerializer.Serialize(response, JsonOptions));
}
catch (NotImplementedException ex)
{
logger.LogWarning(ex, "Not implemented: {Method} {Path}",
context.Request.Method, context.Request.Path);
var response = new
{
type = "https://tools.ietf.org/html/rfc7807",
title = "Not Implemented",
status = StatusCodes.Status501NotImplemented
};
context.Response.StatusCode = StatusCodes.Status501NotImplemented;
context.Response.ContentType = "application/problem+json";
await context.Response.WriteAsync(JsonSerializer.Serialize(response, JsonOptions));
}
catch (Exception ex)
{
logger.LogError(ex, "Unhandled exception for {Method} {Path}",