update error messages into private api; update generals

This commit is contained in:
Ramon Ramirez 2026-01-30 16:06:12 -04:00
parent 03a55dd9d1
commit b84d1815e3
9 changed files with 109 additions and 81 deletions

View File

@ -5,7 +5,7 @@
<artifactId>dom-retrieve-security-notification</artifactId> <artifactId>dom-retrieve-security-notification</artifactId>
<version>1.0-native-quarkus-jdk17</version> <version>1.0-native-quarkus-jdk17</version>
<name>dom-retrieve-security-notification</name> <name>dom-retrieve-security-notification</name>
<description>API Domain - Read payment statuses of the file by ID</description> <description>API Domain - Read alert message by ID</description>
<properties> <properties>
<maven.compiler.release>17</maven.compiler.release> <maven.compiler.release>17</maven.compiler.release>

View File

@ -58,103 +58,117 @@ public class HttpRequest {
private boolean logResponseBody = true; private boolean logResponseBody = true;
public static <T> HttpRequest forApiResponse( public static <T> HttpRequest forApiResponse(
String url, String url,
HttpMethod method, HttpMethod method,
Class<T> dataType Class<T> dataType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(ApiResponse.class) .responseType(ApiResponse.class)
.genericType(dataType) .genericType(dataType)
.apiResponse(true) .apiResponse(true)
.build(); .build();
} }
public static <T> HttpRequest forApiResponseList( public static <T> HttpRequest forApiResponseList(
String url, String url,
HttpMethod method, HttpMethod method,
Class<T> elementType Class<T> elementType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(ApiResponse.class) .responseType(ApiResponse.class)
.complexType(TypeBuilder.listOf(elementType)) .complexType(TypeBuilder.listOf(elementType))
.apiResponse(true) .apiResponse(true)
.listResponse(true) .listResponse(true)
.build(); .build();
} }
public static <T> HttpRequest forApiPrivateResponse( public static <T> HttpRequest forApiPrivateResponse(
String url, String url,
String statusSuccess, String statusSuccess,
HttpMethod method, HttpMethod method,
Class<T> successType Class<T> successType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(ApiPrivateResponse.class) .responseType(ApiPrivateResponse.class)
.complexType(TypeBuilder.parametricType( .complexType(TypeBuilder.parametricType(
Either.class, Either.class,
successType, successType,
ApiPrivateError.class ApiPrivateError.class
)) ))
.apiPrivateResponse(true) .apiPrivateResponse(true)
.eitherResponse(true) .eitherResponse(true)
.errorType(ApiPrivateError.class) .errorType(ApiPrivateError.class)
.statusSuccess(statusSuccess) .statusSuccess(statusSuccess)
.build(); .build();
} }
public static <T> HttpRequest forApiPrivateResponseList( public static <T> HttpRequest forApiPrivateResponseList(
String url, String url,
String statusSuccess, String statusSuccess,
HttpMethod method, HttpMethod method,
Class<T> elementType Class<T> elementType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(ApiPrivateResponse.class) .responseType(ApiPrivateResponse.class)
.complexType(TypeBuilder.parametricType( .complexType(TypeBuilder.parametricType(
Either.class, Either.class,
TypeBuilder.listOf(elementType), TypeBuilder.listOf(elementType),
ApiPrivateError.class ApiPrivateError.class
)) ))
.apiPrivateResponse(true) .apiPrivateResponse(true)
.eitherResponse(true) .eitherResponse(true)
.listResponse(true) .listResponse(true)
.errorType(ApiPrivateError.class) .errorType(ApiPrivateError.class)
.statusSuccess(statusSuccess) .statusSuccess(statusSuccess)
.build(); .build();
} }
public static <T> HttpRequest forDirectResponse( public static <T> HttpRequest forDirectResponse(
String url, String url,
HttpMethod method, HttpMethod method,
Class<T> responseType Class<T> responseType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(responseType) .responseType(responseType)
.build(); .build();
}
public static <T, R> HttpRequest forDirectResponse(
String url,
HttpMethod method,
Class<T> responseType,
Class<R> errorType
) {
return HttpRequest.builder()
.url(url)
.method(method)
.responseType(responseType)
.errorType(errorType)
.build();
} }
public static <T, U> HttpRequest forGenericResponse( public static <T, U> HttpRequest forGenericResponse(
String url, String url,
HttpMethod method, HttpMethod method,
Class<T> rawType, Class<T> rawType,
Class<U> genericType Class<U> genericType
) { ) {
return HttpRequest.builder() return HttpRequest.builder()
.url(url) .url(url)
.method(method) .method(method)
.responseType(rawType) .responseType(rawType)
.complexType(TypeBuilder.parametricType(rawType, genericType)) .complexType(TypeBuilder.parametricType(rawType, genericType))
.build(); .build();
} }
public HttpRequest withHeaders(Map<String, String> headers) { public HttpRequest withHeaders(Map<String, String> headers) {

View File

@ -45,7 +45,7 @@ public class CorrespondenceService implements CorrespondenceUseCase {
); );
} catch (ApiPrivateException e) { } catch (ApiPrivateException e) {
log.warn("Excepcion de la api privada: {} -> {}", e.getStatusCode(), e.getMessage()); log.warn("Excepcion de la api privada: {} -> {}", e.getStatusCode(), e.getMessage());
response = messageHelper.handleException(HttpStatusCodeException.badRequest("400")); response = messageHelper.handleException(HttpStatusCodeException.conflict(e.getStatusCode()));
} catch (HttpStatusCodeException e) { } catch (HttpStatusCodeException e) {
log.error("Excepcion HTTP del api privada: {} - {}", e.getStatusCode(), e.getErrorCode()); log.error("Excepcion HTTP del api privada: {} - {}", e.getStatusCode(), e.getErrorCode());
response = messageHelper.handleException(e); response = messageHelper.handleException(e);

View File

@ -30,11 +30,12 @@ public class ApiPrivateAdapter implements ApiPrivateRepository {
CorrespondenceRequest request CorrespondenceRequest request
) { ) {
List<SecurityNotification> response = securityNotificationUseCase.execute( List<SecurityNotification> response = securityNotificationUseCase.execute(
CorrespondenceMapper.toPaymentRequest(request), SecurityNotification.class CorrespondenceMapper.toPaymentRequest(request),
SecurityNotification.class
); );
if(response.isEmpty()) { if(response.isEmpty()) {
throw HttpStatusCodeException.badRequest("400"); throw HttpStatusCodeException.conflict("PIBE-00");
} }
log.info("Resultado de las transacciones obtenidas {}", response.size()); log.info("Resultado de las transacciones obtenidas {}", response.size());

View File

@ -12,6 +12,7 @@ import com.banesco.module.party.domain.model.PartyIdentification;
import com.banesco.module.security_notification.domain.dto.request.SecurityNotificationRequest; import com.banesco.module.security_notification.domain.dto.request.SecurityNotificationRequest;
import com.banesco.module.security_notification.domain.model.SecurityNotification; import com.banesco.module.security_notification.domain.model.SecurityNotification;
import com.banesco.module.transaction.domain.model.*; import com.banesco.module.transaction.domain.model.*;
import io.netty.util.internal.StringUtil;
import java.util.List; import java.util.List;
@ -114,7 +115,10 @@ public class CorrespondenceMapper {
.build(), .build(),
TransactionDateTime.builder() TransactionDateTime.builder()
.dateType(TransactionDateTimeType.EXPIRY_TIME) .dateType(TransactionDateTimeType.EXPIRY_TIME)
.time(Long.valueOf(response.getTimeExpired())) .time((!StringUtil.isNullOrEmpty(response.getTimeExpired()))
? Long.valueOf(response.getTimeExpired())
: null
)
.build() .build()
); );
} }

View File

@ -289,7 +289,7 @@ public class CorrespondenceResource {
String channelCode, String channelCode,
@QueryParam("customerReferenceFintechId") @QueryParam("customerReferenceFintechId")
@Parameter(description = "ID de la fintech", example = "pranical-test") @Parameter(description = "ID de la fintech", example = "provider-test")
String customerReferenceFintechId, String customerReferenceFintechId,
@QueryParam("appId") @QueryParam("appId")

View File

@ -22,6 +22,8 @@ public class SecurityNotificationClient implements SecurityNotificationUseCase {
private final HttpClientUseCase httpClientUseCase; private final HttpClientUseCase httpClientUseCase;
private final SecurityNotificationConfig securityNotificationConfig; private final SecurityNotificationConfig securityNotificationConfig;
private static final String EMPTY_MESSAGE = "EMPTY_MESSAGE";
@Inject @Inject
public SecurityNotificationClient( public SecurityNotificationClient(
SerializationHelper serializationHelper, SerializationHelper serializationHelper,
@ -67,12 +69,19 @@ public class SecurityNotificationClient implements SecurityNotificationUseCase {
); );
throw ApiPrivateException.builder() throw ApiPrivateException.builder()
.statusCode(response.getEstatus()) .statusCode("PIBE-00")
.message("EMPTY_MESSAGE") .message(EMPTY_MESSAGE)
.build(); .build();
} }
if (detail.isLeft()) { if (detail.isLeft()) {
if(detail.getLeft() == null) {
throw ApiPrivateException.builder()
.statusCode("PIBE-00")
.message(EMPTY_MESSAGE)
.build();
}
return detail.getLeft(); return detail.getLeft();
} }
@ -87,10 +96,10 @@ public class SecurityNotificationClient implements SecurityNotificationUseCase {
); );
throw ApiPrivateException.builder() throw ApiPrivateException.builder()
.statusCode(response.getEstatus()) .statusCode("PIBE-01")
.message((error.getCodError() != null) .message((error.getCodError() != null)
? error.getCodError() + ":" + error.getMensajeError() ? error.getCodError() + ":" + error.getMensajeError()
: "EMPTY_MESSAGE" : EMPTY_MESSAGE
) )
.build(); .build();
} catch (ApiPrivateException e) { } catch (ApiPrivateException e) {

View File

@ -13,6 +13,6 @@ api:
dom-retrieve-security-notification: dom-retrieve-security-notification:
messages: messages:
key: 'dom-retrieve-security-notification' key: 'dom-retrieve-security-notification'
content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"VDE01","httpCode":400,"statusCode":"VDE01","description":"VDE01 - Error en dato de entrada obligatorio: %s"},{"backendCode":"VDE02","httpCode":400,"statusCode":"VDE02","description":"VDE02 - Error en valor permitido para campo: %s"},{"backendCode":"VRN02","httpCode":"204","statusCode":"VRN02","description":"Cliente sin productos"}]' content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validacion no encontrado."},{"backendCode":"503","httpCode":503,"statusCode":"503","description":"Uso interno"},{"backendCode":"422","httpCode":422,"statusCode":"422","description":"Uso interno"},{"backendCode":"500","httpCode":500,"statusCode":"500","description":"Uso interno"},{"backendCode":"100","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-382505","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"OSB-380002","httpCode":503,"statusCode":"503","description":"VDR13 - OSB Disponible"},{"backendCode":"ERROR","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"400","httpCode":400,"statusCode":"400","description":"Uso interno"},{"backendCode":"401","httpCode":401,"statusCode":"401","description":"Uso interno"},{"backendCode":"403","httpCode":403,"statusCode":"403","description":"Uso interno"},{"backendCode":"404","httpCode":404,"statusCode":"404","description":"Uso interno"},{"backendCode":"default","httpCode":409,"statusCode":"409","description":"Conflicto"},{"backendCode":"424","httpCode":424,"statusCode":"424","description":"Error de dependencia"},{"backendCode":"PIBE-00","httpCode":409,"statusCode":"PIB-00","description":"Error Interno backend"},{"backendCode":"PIBE-01","httpCode":409,"statusCode":"PIB-01","description":"Error Interno backend"}]'
rest-client: rest-client:
payment-status-by-id: '{"url":"http://10.135.193.156:8080/AlertSecurity/notificationInteractive/v1/querys/getAlertById/{signatureIdentifier}","timeout":{"connect":10000,"response":10000},"statusSuccess":"00"}' payment-status-by-id: '{"url":"http://10.135.193.156:8080/AlertSecurity/notificationInteractive/v1/querys/getAlertById/{signatureIdentifier}","timeout":{"connect":10000,"response":10000},"statusSuccess":"00"}'