From 85c32df256bf400d1b4b340eafd86624673514e9 Mon Sep 17 00:00:00 2001 From: Atralupus Date: Thu, 20 Nov 2025 14:41:25 +0900 Subject: [PATCH] Add CalcAOFailedExceptionFilter to handle specific exception in Startup configuration --- .../Filters/CalcAOFailedExceptionFilter.cs | 20 +++++++++++++++++++ ArenaService/Setup.cs | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 ArenaService/Filters/CalcAOFailedExceptionFilter.cs diff --git a/ArenaService/Filters/CalcAOFailedExceptionFilter.cs b/ArenaService/Filters/CalcAOFailedExceptionFilter.cs new file mode 100644 index 0000000..99124f4 --- /dev/null +++ b/ArenaService/Filters/CalcAOFailedExceptionFilter.cs @@ -0,0 +1,20 @@ +namespace ArenaService.Filter; + +using ArenaService.Shared.Exceptions; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; + +public class CalcAOFailedExceptionFilter : IExceptionFilter +{ + public void OnException(ExceptionContext context) + { + if (context.Exception is CalcAOFailedException) + { + context.Result = new ObjectResult(new { error = "Total ranking count is under 40." }) + { + StatusCode = StatusCodes.Status423Locked, + }; + context.ExceptionHandled = true; + } + } +} diff --git a/ArenaService/Setup.cs b/ArenaService/Setup.cs index 0129fbb..dd2d089 100644 --- a/ArenaService/Setup.cs +++ b/ArenaService/Setup.cs @@ -10,6 +10,7 @@ namespace ArenaService; using ArenaService.Options; using ArenaService.Services; using ArenaService.Shared.Data; +using ArenaService.Shared.Exceptions; using ArenaService.Shared.Jwt; using ArenaService.Shared.Repositories; using ArenaService.Shared.Services; @@ -85,6 +86,7 @@ headlessOptions.Value.JwtSecretKey is not null options.Filters.Add(); options.Filters.Add(); options.Filters.Add(); + options.Filters.Add(); }) .AddNewtonsoftJson(options => {