Watch
1
0
Fork
You've already forked test-web
0

Initial commit
All checks were successful
Build / build (push) Successful in 52s

This commit is contained in:
Chris 2026-05-30 12:26:50 +01:00 • committed by Chris Dill
commit 0e79a8eb5e
43 changed files with 1282 additions and 0 deletions

View file

@ -0,0 +1,34 @@
namespace TestWeb.Utils;
public class RequestValidationFilter<TRequest>(
ILogger<RequestValidationFilter<TRequest>> logger,
IValidator<TRequest>? validator = null) : IEndpointFilter
{
public async ValueTask<object?> InvokeAsync(
EndpointFilterInvocationContext context,
EndpointFilterDelegate next)
{
var requestName = typeof(TRequest).FullName;
if (validator is null)
{
logger.LogInformation("{Request}: No validator configured.", requestName);
return await next(context);
}
logger.LogInformation("{Request}: Validating...", requestName);
var request = context.Arguments.OfType<TRequest>().First();
var validationResult = await validator.ValidateAsync(
request,
context.HttpContext.RequestAborted
);
if (!validationResult.IsValid)
{
logger.LogWarning("{Request}: Validation failed.", requestName);
return TypedResults.ValidationProblem(validationResult.ToDictionary());
}
logger.LogInformation("{Request}: Validation succeeded.", requestName);
return await next(context);
}
}