update error messages into private api; update generals

This commit is contained in:
Ramon Ramirez 2026-01-30 16:06:43 -04:00
parent 058f4ac97a
commit b3a04f80de
7 changed files with 136 additions and 76 deletions

View File

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

View File

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

View File

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

View File

@ -6,6 +6,8 @@ import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.Getter;
import lombok.ToString;
import java.util.Map;
@Getter
@ToString
@RegisterForReflection
@ -13,4 +15,5 @@ public class SecurityTraceConfig {
private String url;
private TimeoutConfig timeout;
private SecurityTraceRequest request;
private Map<String, String> converters;
}

View File

@ -6,6 +6,7 @@ import com.banesco.common.domain.model.ApiResponse;
import com.banesco.common.domain.model.HttpRequest;
import com.banesco.common.infrastructure.config.RestClientConfig;
import com.banesco.module.correspondence.domain.dto.request.CorrespondenceRequest;
import com.banesco.module.correspondence.domain.dto.response.CorrespondenceResponse;
import com.banesco.module.security_trace.application.usecase.SecurityTraceUseCase;
import com.banesco.module.security_trace.domain.dto.request.SecurityTraceRequest;
import com.banesco.module.security_trace.domain.model.SecurityTraceConfig;
@ -16,6 +17,7 @@ import jakarta.ws.rs.core.Response;
import lombok.extern.slf4j.Slf4j;
import java.util.Date;
import java.util.Objects;
@Slf4j
@ApplicationScoped
@ -89,12 +91,13 @@ public class SecurityTraceClient implements SecurityTraceUseCase {
) {
long executedTime = (endTime - startTime);
int statusHttp = apiResponse.getStatus();
ApiResponse<?> apiResponseData = (ApiResponse<?>) apiResponse.getEntity();
ApiResponse<CorrespondenceResponse> apiResponseData =
(ApiResponse<CorrespondenceResponse>) apiResponse.getEntity();
return SecurityTraceRequest.builder()
.sp(securityTraceConfig.getRequest().getSp())
.codBan(securityTraceConfig.getRequest().getCodBan())
.codMon(securityTraceConfig.getRequest().getCodMon())
.codMon(getCodMon(apiResponseData))
.codEve(securityTraceConfig.getRequest().getCodEve())
.codEve2(securityTraceConfig.getRequest().getCodEve2())
.login(apiRequest.getChannelCode())
@ -118,6 +121,46 @@ public class SecurityTraceClient implements SecurityTraceUseCase {
.build();
}
private String getCodMon(
ApiResponse<CorrespondenceResponse> apiResponseData
) {
String defaultCurrency = securityTraceConfig.getRequest().getCodMon();
if(
Objects.isNull(apiResponseData) ||
Objects.isNull(apiResponseData.getData()) ||
Objects.isNull(apiResponseData.getData().getCorrespondence()) ||
apiResponseData.getData().getCorrespondence().isEmpty()
) {
log.info("Moneda asignada por defecto: {}", defaultCurrency);
return defaultCurrency;
}
String currency = apiResponseData.getData().getCorrespondence().stream()
.filter(item ->
item.getTransaction() != null &&
item.getTransaction().getFinancialTransaction() != null &&
!StringUtil.isNullOrEmpty(item.getTransaction().getFinancialTransaction().getCurrencyCode())
)
.findFirst()
.map(item -> item.getTransaction().getFinancialTransaction().getCurrencyCode())
.orElse(null);
if (StringUtil.isNullOrEmpty(currency)) {
log.info("Moneda de la peticion/respuesta vacia, asignada por defecto: {}", defaultCurrency);
return defaultCurrency;
}
defaultCurrency = securityTraceConfig.getConverters().getOrDefault(
currency.toUpperCase(),
currency.toUpperCase()
);
log.info("Moneda convertida o por defecto: {} -> {}", currency, defaultCurrency);
return defaultCurrency;
}
private String getStatusMessage(
ApiResponse<?> apiResponseData,
int statusHttp

View File

@ -13,8 +13,8 @@ api:
bus-retrieve-security-notification:
messages:
key: 'bus-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":"VRN04","httpCode":"503","statusCode":"VRN04","description":"Servicio en horario de mantenimiento","status":"error"},{"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":"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":"VRN04","httpCode":503,"statusCode":"VRN04","description":"Servicio en horario de mantenimiento"},{"backendCode":"PIB-00","httpCode":409,"statusCode":"PIB-00","description":"Error Interno backend"},{"backendCode":"PIB-01","httpCode":409,"statusCode":"PIB-01","description":"Error Interno backend"}]'
rest-client:
dom-retrieve-security-notification: '{"url":"http://localhost:8083/correspondence/retrieve/{securityNotificationId}/{channelCode}","timeout":{"connect":10000,"response":10000}}'
security-trace: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":10000,"response":10000},"request":{"sp":"spAPI_Traza","codEve":"CONSALERTS","codEve2":"CONSALERTS","codBan":"01","codMon":"BS"}}'
security-trace: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":10000,"response":10000},"request":{"sp":"spAPI_Traza","codEve":"CONSALERTS","codEve2":"CONSALERTS","codBan":"01","codMon":"BS"},"converters":{"VES":"BS"}}'
service-status: '{"url":"http://api-get-service-status-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/service/status","timeout":{"connect":10000,"response":10000},"request":{"applicationId": "","transactionId": "","bankService": {"bankCode": "01","serviceCode": "APIFI","eventCode": "P2PVUEL"}}}'