Files
jobtrackingapp/JobTrackerApi/Services/AiUsageLimitExceptionHandler.cs
T
cesnimda 25a6da951e
CI and Deploy / test (pull_request) Successful in 5m18s
CI and Deploy / deploy (pull_request) Has been skipped
fix(ai): meter synchronous generations
2026-08-15 20:25:10 +02:00

27 lines
903 B
C#

using Microsoft.AspNetCore.Diagnostics;
using Microsoft.AspNetCore.Mvc;
namespace JobTrackerApi.Services;
public sealed class AiUsageLimitExceptionHandler : IExceptionHandler
{
public async ValueTask<bool> TryHandleAsync(HttpContext httpContext, Exception exception, CancellationToken cancellationToken)
{
if (exception is not AiUsageLimitException limit) return false;
httpContext.Response.StatusCode = StatusCodes.Status429TooManyRequests;
await httpContext.Response.WriteAsJsonAsync(new ProblemDetails
{
Status = StatusCodes.Status429TooManyRequests,
Title = "AI usage limit reached",
Detail = limit.Message,
Extensions =
{
["code"] = limit.Code,
["traceId"] = httpContext.TraceIdentifier,
},
}, cancellationToken);
return true;
}
}