diff --git a/CHANGELOG.md b/CHANGELOG.md
index e396ad7..08f0173 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,15 @@
---
+## v4.3.2 - 11/12/2025
+**REFATORAÇÃO**: Mudança no result pattern e na classe de erro
+- Remove a redundância de codigo na criação de um Error
+- Remove sobrecargas na criação de Result com Errors
+- Simplifica as respostas de Errors
+- Remove método redundante do middleware de validação do token
+
+---
+
## v4.3.1 - 09/12/2025
**REFATORAÇÃO**: Remove o método de busca por id da entidade nos IAiModelService
Adiciona relacionamento entre entidade `ProductEmbeddings` e `Company` para uma melhor busca
diff --git a/Directory.Build.props b/Directory.Build.props
index 7ef75cb..e5753e4 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -4,7 +4,7 @@
Samuel Zedec
Copyright © $([System.DateTime]::Now.Year)
Sistema de gestão financeira para um lanchonete local
- 4.3.1
+ 4.3.2
diff --git a/src/Riber.Api/Common/Api/GlobalExceptionHandler.cs b/src/Riber.Api/Common/Api/GlobalExceptionHandler.cs
index 357cbd7..5dfa7fe 100644
--- a/src/Riber.Api/Common/Api/GlobalExceptionHandler.cs
+++ b/src/Riber.Api/Common/Api/GlobalExceptionHandler.cs
@@ -11,28 +11,30 @@ namespace Riber.Api.Common.Api;
/// Trata exceções globais na aplicação registrando erros e formatando
/// uma resposta JSON padronizada para o cliente.
///
-public sealed class GlobalExceptionHandler(ILogger logger) : IExceptionHandler
+public sealed class GlobalExceptionHandler(
+ ILogger logger)
+ : IExceptionHandler
{
public async ValueTask TryHandleAsync(
- HttpContext httpContext,
- Exception exception,
+ HttpContext httpContext,
+ Exception exception,
CancellationToken cancellationToken)
{
- logger.LogError(exception, "Exception occurred: {ExceptionType} - {Message}",
+ logger.LogError(exception, "Exception occurred: {ExceptionType} - {Message}",
exception.GetType().Name, exception.Message);
-
- (HttpStatusCode statusCode, string message, Dictionary details) = MapExceptionToError(exception);
- await httpContext.WriteErrorResponse(statusCode, message, details);
+
+ (HttpStatusCode statusCode, string message, Dictionary? details) = MapExceptionToError(exception);
+ await httpContext.WriteErrorResponse(statusCode, message, details, cancellationToken);
return true;
}
- private static (HttpStatusCode StatusCode, string Message, Dictionary Details) MapExceptionToError(Exception exception)
+ private static (HttpStatusCode, string, Dictionary?) MapExceptionToError(Exception exception)
=> exception switch
{
- RequestTimeoutException timeoutEx => (timeoutEx.Code, timeoutEx.Message, []),
- ValidationException validationEx => (HttpStatusCode.BadRequest, string.Empty, validationEx.Details),
- Layer.ApplicationException applicationEx => (applicationEx.Code, applicationEx.Message, []),
- DomainException domainEx => (HttpStatusCode.UnprocessableContent, domainEx.Message, []),
- _ => (HttpStatusCode.InternalServerError, "Erro inesperado no servidor.", [])
+ RequestTimeoutException timeoutEx => (timeoutEx.Code, timeoutEx.Message, null),
+ ValidationException validationEx => (HttpStatusCode.BadRequest, "Dados Inválidos.", validationEx.Details),
+ Layer.ApplicationException applicationEx => (applicationEx.Code, applicationEx.Message, null),
+ DomainException domainEx => (HttpStatusCode.UnprocessableContent, domainEx.Message, null),
+ _ => (HttpStatusCode.InternalServerError, "Erro inesperado no servidor.", null)
};
}
\ No newline at end of file
diff --git a/src/Riber.Api/Extensions/HttpContextExtension.cs b/src/Riber.Api/Extensions/HttpContextExtension.cs
index ac4213e..49cf05d 100644
--- a/src/Riber.Api/Extensions/HttpContextExtension.cs
+++ b/src/Riber.Api/Extensions/HttpContextExtension.cs
@@ -17,16 +17,15 @@ public static async Task WriteErrorResponse(
this HttpContext context,
HttpStatusCode code,
string message,
- Dictionary details)
+ Dictionary? details = null,
+ CancellationToken cancellationToken = default)
{
- var response = details.Count == 0
- ? Result.Failure