diff --git a/scripts/native/file/bus-legal-customer-product-directory-1.0-native-quarkus-jdk17-runner b/scripts/native/file/bus-legal-customer-product-directory-1.0-native-quarkus-jdk17-runner index 0a42899..dc8224d 100644 Binary files a/scripts/native/file/bus-legal-customer-product-directory-1.0-native-quarkus-jdk17-runner and b/scripts/native/file/bus-legal-customer-product-directory-1.0-native-quarkus-jdk17-runner differ diff --git a/src/main/java/com/banesco/common/application/helper/MessageResponseHelper.java b/src/main/java/com/banesco/common/application/helper/MessageHelper.java similarity index 91% rename from src/main/java/com/banesco/common/application/helper/MessageResponseHelper.java rename to src/main/java/com/banesco/common/application/helper/MessageHelper.java index b8c5efa..811c2d4 100644 --- a/src/main/java/com/banesco/common/application/helper/MessageResponseHelper.java +++ b/src/main/java/com/banesco/common/application/helper/MessageHelper.java @@ -21,7 +21,7 @@ import java.util.concurrent.ConcurrentHashMap; @Slf4j @ApplicationScoped @RegisterForReflection -public class MessageResponseHelper { +public class MessageHelper { private final MessagesConfig messagesConfig; private final Map errorMappings; @@ -31,7 +31,7 @@ public class MessageResponseHelper { private final ObjectMapper objectMapper; @Inject - public MessageResponseHelper( + public MessageHelper( ObjectMapper objectMapper, MessagesConfig messagesConfig ) { @@ -85,18 +85,18 @@ public class MessageResponseHelper { private ErrorMapping getError(String errorCode) { return errorMappings.getOrDefault( - errorCode, errorMappings.getOrDefault(ERROR_DEFAULT, createDefaultMapping()) + errorCode, errorMappings.getOrDefault(ERROR_DEFAULT, createDefaultMapping()) ); } private Response buildErrorResponse(HttpStatusCodeException exception) { ErrorMapping mapping = errorMappings.getOrDefault( - exception.getErrorCode(), - errorMappings.getOrDefault(ERROR_DEFAULT, createDefaultMapping()) - ); - StatusResponse status = createError( - mapping, exception.getFieldPath() + exception.getErrorCode(), errorMappings.getOrDefault( + String.valueOf(exception.getStatusCode()), + createDefaultMapping() + ) ); + StatusResponse status = createError(mapping, exception.getFieldPath()); log.error( "[{}] Message {} -> {}", @@ -151,7 +151,7 @@ public class MessageResponseHelper { } private String loadFromJsonFile() { - try (InputStream is = MessageResponseHelper.class.getClassLoader().getResourceAsStream(ERROR_FILE_PATH)) { + try (InputStream is = MessageHelper.class.getClassLoader().getResourceAsStream(ERROR_FILE_PATH)) { if (is == null) { log.warn("No se encontró el archivo de errores: {}", ERROR_FILE_PATH); return ""; @@ -173,9 +173,9 @@ public class MessageResponseHelper { private ErrorMapping createDefaultMapping() { ErrorMapping mapping = new ErrorMapping(); mapping.setBackendCode(ERROR_DEFAULT); - mapping.setHttpCode(500); - mapping.setStatusCode("500"); - mapping.setDescription("Error interno del servidor"); + mapping.setHttpCode(409); + mapping.setStatusCode("409"); + mapping.setDescription("Conflicto"); return mapping; } @@ -183,7 +183,7 @@ public class MessageResponseHelper { ErrorMapping mapping = new ErrorMapping(); mapping.setBackendCode(SUCCESS_DEFAULT); mapping.setHttpCode(200); - mapping.setStatusCode("000"); + mapping.setStatusCode("200"); mapping.setDescription("Operación exitosa"); return mapping; } diff --git a/src/main/java/com/banesco/common/application/service/HttpClientService.java b/src/main/java/com/banesco/common/application/service/HttpClientService.java index 4fde4df..b53b2a4 100644 --- a/src/main/java/com/banesco/common/application/service/HttpClientService.java +++ b/src/main/java/com/banesco/common/application/service/HttpClientService.java @@ -31,17 +31,7 @@ public class HttpClientService implements HttpClientUseCase { @Override public T execute(HttpRequest request) { - String finalUrl = request.getUrl(); - - if (request.getPathParams() != null && !request.getPathParams().isEmpty()) { - log.debug("PathParams antes de reemplazar: {}", request.getPathParams()); - log.debug("URL original: {}", finalUrl); - - for (Map.Entry entry : request.getPathParams().entrySet()) { - String placeholder = "{" + entry.getKey() + "}"; - finalUrl = finalUrl.replace(placeholder, entry.getValue()); - } - } + String finalUrl = buildFinalUrl(request); log.info("URL final: {}", finalUrl); @@ -60,14 +50,12 @@ public class HttpClientService implements HttpClientUseCase { try (Client client = createClient(request.getConnectTimeout(), request.getReadTimeout())) { WebTarget target = client.target(finalUrl); - if (request.getQueryParams() != null && !request.getQueryParams().isEmpty()) { - request.getQueryParams().forEach(target::queryParam); - } - Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON); if (request.getHeaders() != null && !request.getHeaders().isEmpty()) { - request.getHeaders().forEach(builder::header); + for (Map.Entry entry : request.getHeaders().entrySet()) { + builder.header(entry.getKey(), entry.getValue()); + } } Response response = buildRequest(builder, request); @@ -78,12 +66,55 @@ public class HttpClientService implements HttpClientUseCase { } catch (Exception e) { log.error("Error de conexión {}: {}", request.getMethod(), e.getMessage()); throw HttpStatusCodeException.serviceUnavailable( - "503", - "Error de conexión con el servicio externo: " + e.getMessage() + "503", + "Error de conexión con el servicio externo: " + e.getMessage() ); } } + private String buildFinalUrl(HttpRequest request) { + String finalUrl = request.getUrl(); + + if (request.getPathParams() != null && !request.getPathParams().isEmpty()) { + log.debug("PathParams antes de reemplazar: {}", request.getPathParams()); + log.debug("URL original: {}", finalUrl); + + for (Map.Entry entry : request.getPathParams().entrySet()) { + String placeholder = "{" + entry.getKey() + "}"; + finalUrl = finalUrl.replace(placeholder, entry.getValue()); + } + } + + finalUrl = appendQueryParams(finalUrl, request.getQueryParams()); + + return finalUrl; + } + + private String appendQueryParams(String url, Map queryParams) { + if (queryParams == null || queryParams.isEmpty()) { + return url; + } + + StringBuilder urlBuilder = new StringBuilder(url); + + boolean firstParam = !url.contains("?"); + + for (Map.Entry entry : queryParams.entrySet()) { + if (firstParam) { + urlBuilder.append("?"); + firstParam = false; + } else { + urlBuilder.append("&"); + } + + urlBuilder.append(entry.getKey()) + .append("=") + .append(entry.getValue() != null ? entry.getValue() : ""); + } + + return urlBuilder.toString(); + } + private Response buildRequest( Invocation.Builder builder, HttpRequest request @@ -178,8 +209,8 @@ public class HttpClientService implements HttpClientUseCase { @SuppressWarnings("unchecked") private T deserializeApiResponse( - String responseBody, - HttpRequest request + String responseBody, + HttpRequest request ) { try { if (request.getGenericType() != null) { diff --git a/src/main/java/com/banesco/common/domain/model/AppIdConfig.java b/src/main/java/com/banesco/common/domain/model/AppIdConfig.java new file mode 100644 index 0000000..5475aeb --- /dev/null +++ b/src/main/java/com/banesco/common/domain/model/AppIdConfig.java @@ -0,0 +1,16 @@ +package com.banesco.common.domain.model; + +import com.banesco.module.legal_customer_product_directory.domain.dto.request.LegalCustomerProductDirectoryRequest; +import io.quarkus.runtime.annotations.RegisterForReflection; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +@RegisterForReflection +public class AppIdConfig { + private String appId; + private LegalCustomerProductDirectoryRequest request; +} diff --git a/src/main/java/com/banesco/common/domain/model/DominionConfig.java b/src/main/java/com/banesco/common/domain/model/DomainConfig.java similarity index 89% rename from src/main/java/com/banesco/common/domain/model/DominionConfig.java rename to src/main/java/com/banesco/common/domain/model/DomainConfig.java index 36014c6..c7f4911 100644 --- a/src/main/java/com/banesco/common/domain/model/DominionConfig.java +++ b/src/main/java/com/banesco/common/domain/model/DomainConfig.java @@ -7,7 +7,7 @@ import lombok.ToString; @Getter @ToString @RegisterForReflection -public class DominionConfig { +public class DomainConfig { private String url; private TimeoutConfig timeout; } diff --git a/src/main/java/com/banesco/common/infrastructure/config/ApiAllowedConfig.java b/src/main/java/com/banesco/common/infrastructure/config/ApiAllowedConfig.java new file mode 100644 index 0000000..08c0ced --- /dev/null +++ b/src/main/java/com/banesco/common/infrastructure/config/ApiAllowedConfig.java @@ -0,0 +1,74 @@ +package com.banesco.common.infrastructure.config; + +import com.banesco.common.domain.model.AppIdConfig; +import com.banesco.module.legal_customer_product_directory.domain.dto.request.LegalCustomerProductDirectoryRequest; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.quarkus.runtime.annotations.RegisterForReflection; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import lombok.extern.slf4j.Slf4j; +import org.eclipse.microprofile.config.Config; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j +@ApplicationScoped +@RegisterForReflection +public class ApiAllowedConfig { + + private final Config config; + private final ObjectMapper objectMapper; + + private static final String API_ALLOWED_BASE = "api.allowed."; + private static final String API_ALLOWED_APP_ID_NAME = "app-id"; + + @Inject + public ApiAllowedConfig( + Config config, + ObjectMapper objectMapper + ) { + this.config = config; + this.objectMapper = objectMapper; + } + + public List getAppIdAllowed() { + try { + String fullConfigName = API_ALLOWED_BASE + API_ALLOWED_APP_ID_NAME; + String json = config.getValue(fullConfigName, String.class); + log.info("Configurando {}: {}", fullConfigName, json); + + if (json == null || json.trim().isEmpty()) { + throw new IllegalStateException("Configuración no encontrada para: " + fullConfigName); + } + + List> configList = objectMapper.readValue(json, new TypeReference<>() {}); + + return configList.stream() + .map(this::mapToAppIdConfig) + .toList(); + } catch (Exception e) { + return List.of(); + } + } + + private AppIdConfig mapToAppIdConfig(Map configMap) { + AppIdConfig appIdConfig = new AppIdConfig(); + String appId = (String) configMap.get("appId"); + + appIdConfig.setAppId(appId); + + if (configMap.containsKey("request")) { + Object requestObj = configMap.get("request"); + LegalCustomerProductDirectoryRequest request = objectMapper.convertValue( + requestObj, LegalCustomerProductDirectoryRequest.class + ); + + appIdConfig.setRequest(request); + } + + return appIdConfig; + } +} \ No newline at end of file diff --git a/src/main/java/com/banesco/common/infrastructure/config/MessagesConfig.java b/src/main/java/com/banesco/common/infrastructure/config/MessagesConfig.java index 7b8f1a5..e527a9e 100644 --- a/src/main/java/com/banesco/common/infrastructure/config/MessagesConfig.java +++ b/src/main/java/com/banesco/common/infrastructure/config/MessagesConfig.java @@ -13,7 +13,7 @@ public class MessagesConfig { private final String errorMessagesJson; private final String messagesKey; - private static final String KEY = "busLogalCustomerProductDirectory"; + private static final String KEY = "bus-legal-customer-product-directory"; @Inject public MessagesConfig(Config config) { diff --git a/src/main/java/com/banesco/common/infrastructure/config/RequestValidationConfig.java b/src/main/java/com/banesco/common/infrastructure/config/RequestValidationConfig.java deleted file mode 100644 index d027945..0000000 --- a/src/main/java/com/banesco/common/infrastructure/config/RequestValidationConfig.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.banesco.common.infrastructure.config; - -import io.smallrye.config.ConfigMapping; - -@ConfigMapping(prefix = "api.allowed.request-validation") -public interface RequestValidationConfig { - String customerIbsNumber(); - String accountStatus(); - String productCvCode(); - String limitType(); - String cacheaIndicator(); -} diff --git a/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java b/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java index de7d7e6..d6ac36e 100644 --- a/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java +++ b/src/main/java/com/banesco/common/infrastructure/config/RestClientConfig.java @@ -1,6 +1,6 @@ package com.banesco.common.infrastructure.config; -import com.banesco.common.domain.model.DominionConfig; +import com.banesco.common.domain.model.DomainConfig; import com.banesco.module.security_trace.domain.model.SecurityTraceConfig; import com.banesco.module.service_status.domain.model.ServiceStatusConfig; import com.fasterxml.jackson.core.JsonProcessingException; @@ -36,8 +36,8 @@ public class RestClientConfig { this.objectMapper = objectMapper; } - public DominionConfig getDomLegalCustomerConfig() { - return getConfig(API_DOMAIN_NAME, DominionConfig.class); + public DomainConfig getDomLegalCustomerConfig() { + return getConfig(API_DOMAIN_NAME, DomainConfig.class); } public SecurityTraceConfig getSecurityTraceConfig() { diff --git a/src/main/java/com/banesco/module/legal_customer_product_directory/application/service/LegalCustomerProductDirectoryService.java b/src/main/java/com/banesco/module/legal_customer_product_directory/application/service/LegalCustomerProductDirectoryService.java index f8ed63f..b51d8c1 100644 --- a/src/main/java/com/banesco/module/legal_customer_product_directory/application/service/LegalCustomerProductDirectoryService.java +++ b/src/main/java/com/banesco/module/legal_customer_product_directory/application/service/LegalCustomerProductDirectoryService.java @@ -1,8 +1,10 @@ package com.banesco.module.legal_customer_product_directory.application.service; -import com.banesco.common.application.helper.MessageResponseHelper; +import com.banesco.common.application.helper.MessageHelper; import com.banesco.common.domain.exception.HttpStatusCodeException; import com.banesco.common.domain.model.ApiResponse; +import com.banesco.common.domain.model.AppIdConfig; +import com.banesco.common.infrastructure.config.ApiAllowedConfig; import com.banesco.common.infrastructure.context.RequestContext; import com.banesco.module.legal_customer_product_directory.application.usecase.DomainUseCase; import com.banesco.module.legal_customer_product_directory.application.usecase.LegalCustomerProductDirectoryUseCase; @@ -17,28 +19,34 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import lombok.extern.slf4j.Slf4j; +import java.util.List; import java.util.Objects; +import java.util.Optional; @Slf4j @ApplicationScoped public class LegalCustomerProductDirectoryService implements LegalCustomerProductDirectoryUseCase { - private final MessageResponseHelper messageResponseHelper; + private final MessageHelper messageHelper; private final ServiceStatusUseCase serviceStatusUseCase; private final SecurityTraceUseCase securityTraceUseCase; private final DomainUseCase domainUseCase; + private final List appIdsAllowed; + @Inject public LegalCustomerProductDirectoryService( - MessageResponseHelper messageResponseHelper, + ApiAllowedConfig apiAllowedConfig, + MessageHelper messageHelper, ServiceStatusUseCase serviceStatusUseCase, SecurityTraceUseCase securityTraceUseCase, DomainUseCase domainUseCase ) { - this.messageResponseHelper = messageResponseHelper; + this.messageHelper = messageHelper; this.serviceStatusUseCase = serviceStatusUseCase; this.securityTraceUseCase = securityTraceUseCase; this.domainUseCase = domainUseCase; + this.appIdsAllowed = apiAllowedConfig.getAppIdAllowed(); } @Override @@ -47,19 +55,21 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc ) { log.info("Iniciando ejecución para el cliente: {}", request.getCustomerIbsNumber()); - if(!serviceStatus(request)) { - log.info("Estatus del servicio no disponible: {}", request.getCustomerIbsNumber()); + LegalCustomerProductDirectoryRequest requestFromAppId = getRequestFromAppId(request); + + if(!isServiceStatusActive(requestFromAppId)) { + log.info("Estatus del servicio no disponible: {}", requestFromAppId.getCustomerIbsNumber()); throw HttpStatusCodeException.serviceUnavailable("VRN04"); } try { - ApiResponse response = domain(request); + ApiResponse response = domain(requestFromAppId); if ( !Objects.isNull(response.getData()) && - messageResponseHelper.isSuccessStatusCode(response.getStatusResponse()) + messageHelper.isSuccessStatusCode(response.getStatusResponse()) ) { - return new ApiResponse<>(response.getData(), messageResponseHelper.createStatusResponse( + return new ApiResponse<>(response.getData(), messageHelper.createStatusResponse( response.getStatusResponse().getStatusCode() )); } @@ -76,6 +86,37 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc } } + private LegalCustomerProductDirectoryRequest getRequestFromAppId( + LegalCustomerProductDirectoryRequest request + ) { + if(appIdsAllowed.isEmpty()) { + log.info( + "Configuración de la Lista App ID no disponible: {} -> {}", + request.getCustomerIbsNumber(), + request.getAppId() + ); + throw HttpStatusCodeException.unauthorized("401"); + } + + Optional appIdAllowed = appIdsAllowed.stream() + .filter(config -> config.getAppId().equals(request.getAppId())) + .findFirst(); + + if(appIdAllowed.isEmpty()) { + log.info("App ID no habilitado: {} -> {}", request.getCustomerIbsNumber(), request.getAppId()); + throw HttpStatusCodeException.unauthorized("401"); + } + + AppIdConfig appIdConfig = appIdAllowed.get(); + + if(!request.hasValidRequestParameters(appIdConfig)) { + log.info("App ID sin configuración: {} -> {}", request.getCustomerIbsNumber(), request.getAppId()); + throw HttpStatusCodeException.unauthorized("401"); + } + + return request.fromAppIdConfig(appIdConfig); + } + private ApiResponse domain( LegalCustomerProductDirectoryRequest request ) { @@ -83,7 +124,7 @@ public class LegalCustomerProductDirectoryService implements LegalCustomerProduc return domainUseCase.execute(request, LegalCustomerProductDirectoryResponse.class); } - private boolean serviceStatus( + private boolean isServiceStatusActive( LegalCustomerProductDirectoryRequest request ) { log.info("Ejecutando llamada al api de la consulta del estatus del servicio"); diff --git a/src/main/java/com/banesco/module/legal_customer_product_directory/domain/dto/request/LegalCustomerProductDirectoryRequest.java b/src/main/java/com/banesco/module/legal_customer_product_directory/domain/dto/request/LegalCustomerProductDirectoryRequest.java index c317ea9..a6e3f76 100644 --- a/src/main/java/com/banesco/module/legal_customer_product_directory/domain/dto/request/LegalCustomerProductDirectoryRequest.java +++ b/src/main/java/com/banesco/module/legal_customer_product_directory/domain/dto/request/LegalCustomerProductDirectoryRequest.java @@ -1,14 +1,14 @@ package com.banesco.module.legal_customer_product_directory.domain.dto.request; +import com.banesco.common.domain.model.AppIdConfig; import io.quarkus.runtime.annotations.RegisterForReflection; import lombok.*; +import java.util.LinkedHashMap; import java.util.Map; -import java.util.Objects; - -import static java.util.Map.entry; @Getter +@Setter @ToString @Builder @NoArgsConstructor @@ -34,9 +34,74 @@ public class LegalCustomerProductDirectoryRequest { private String casheaIndicator; // VCASHEA - SI/NO (filtro) public Map toQueryString() { - return Map.ofEntries( - entry("appId", Objects.toString(getAppId(), "")), - entry("customerReferenceFintechId", Objects.toString(getCustomerReferenceFintechId(), "")) - ); + Map queryParams = new LinkedHashMap<>(); + + addIfNotEmpty(queryParams, "appId", getAppId()); + addIfNotEmpty(queryParams, "customerReferenceFintechId", getCustomerReferenceFintechId()); + addIfNotEmpty(queryParams, "serviceType", getServiceType()); + addIfNotEmpty(queryParams, "limitType", getLimitType()); + addIfNotEmpty(queryParams, "casheaIndicator", getCasheaIndicator()); + addIfNotEmpty(queryParams, "bankNumber", getBankNumber()); + addIfNotEmpty(queryParams, "currencyCode", getCurrencyCode()); + addIfNotEmpty(queryParams, "accountStatus", getAccountStatus()); + addIfNotEmpty(queryParams, "productCvCode", getProductCvCode()); + addIfNotEmpty(queryParams, "productCode", getProductCode()); + addIfNotEmpty(queryParams, "channelCode", getChannelCode()); + addIfNotEmpty(queryParams, "affiliationStatus", getAffiliationStatus()); + + return queryParams; + } + + public LegalCustomerProductDirectoryRequest fromAppIdConfig( + AppIdConfig appIdConfig + ) { + return LegalCustomerProductDirectoryRequest.builder() + .customerIbsNumber(this.getCustomerIbsNumber()) + .appId(this.getAppId()) + .customerReferenceFintechId(this.getCustomerReferenceFintechId()) + .serviceType(appIdConfig.getRequest().getServiceType()) + .limitType(appIdConfig.getRequest().getLimitType()) + .casheaIndicator(appIdConfig.getRequest().getCasheaIndicator()) + .bankNumber(appIdConfig.getRequest().getBankNumber()) + .currencyCode(appIdConfig.getRequest().getCurrencyCode()) + .accountStatus(appIdConfig.getRequest().getAccountStatus()) + .productCvCode(appIdConfig.getRequest().getProductCvCode()) + .productCode(appIdConfig.getRequest().getProductCode()) + .channelCode(appIdConfig.getRequest().getChannelCode()) + .affiliationStatus(appIdConfig.getRequest().getAffiliationStatus()) + .build(); + } + + public boolean hasValidRequestParameters(AppIdConfig appIdConfig) { + if (appIdConfig == null || appIdConfig.getRequest() == null) { + return false; + } + + LegalCustomerProductDirectoryRequest configRequest = appIdConfig.getRequest(); + + return hasValue(configRequest.getBankNumber()) || + hasValue(configRequest.getCurrencyCode()) || + hasValue(configRequest.getAccountStatus()) || + hasValue(configRequest.getProductCvCode()) || + hasValue(configRequest.getProductCode()) || + hasValue(configRequest.getChannelCode()) || + hasValue(configRequest.getServiceType()) || + hasValue(configRequest.getAffiliationStatus()) || + hasValue(configRequest.getLimitType()) || + hasValue(configRequest.getCasheaIndicator()); + } + + private void addIfNotEmpty( + Map map, + String key, + String value + ) { + if (hasValue(value)) { + map.put(key, value); + } + } + + private boolean hasValue(String field) { + return field != null && !field.trim().isEmpty(); } } \ No newline at end of file diff --git a/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/client/DomLegalCustomerDirectoryClient.java b/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/client/DomLegalCustomerDirectoryClient.java index e080eb6..9fed3dc 100644 --- a/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/client/DomLegalCustomerDirectoryClient.java +++ b/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/client/DomLegalCustomerDirectoryClient.java @@ -4,7 +4,7 @@ import com.banesco.common.application.usecase.HttpClientUseCase; import com.banesco.common.domain.exception.HttpApiResponseException; import com.banesco.common.domain.exception.HttpStatusCodeException; import com.banesco.common.domain.model.ApiResponse; -import com.banesco.common.domain.model.DominionConfig; +import com.banesco.common.domain.model.DomainConfig; import com.banesco.common.domain.model.HttpRequest; import com.banesco.common.infrastructure.config.RestClientConfig; import com.banesco.module.legal_customer_product_directory.application.usecase.DomainUseCase; @@ -19,7 +19,7 @@ import java.util.Map; @ApplicationScoped public class DomLegalCustomerDirectoryClient implements DomainUseCase { private final HttpClientUseCase httpClientUseCase; - private final DominionConfig dominionConfig; + private final DomainConfig domainConfig; @Inject public DomLegalCustomerDirectoryClient( @@ -27,8 +27,8 @@ public class DomLegalCustomerDirectoryClient implements DomainUseCase { RestClientConfig restClientConfig ) { this.httpClientUseCase = httpClientUseCase; - this.dominionConfig = restClientConfig.getDomLegalCustomerConfig(); - log.info("Configuración cargada para bus-legal-customer-directory: {}", dominionConfig); + this.domainConfig = restClientConfig.getDomLegalCustomerConfig(); + log.info("Configuración cargada para bus-legal-customer-directory: {}", domainConfig); } @Override @@ -38,14 +38,14 @@ public class DomLegalCustomerDirectoryClient implements DomainUseCase { ) { String customerIbsNumber = params.getCustomerIbsNumber(); HttpRequest request = HttpRequest.builder() - .url(dominionConfig.getUrl()) + .url(domainConfig.getUrl()) .method(HttpRequest.HttpMethod.GET) .pathParams(Map.of("customerIbsNumber", customerIbsNumber)) .queryParams(params.toQueryString()) .responseType(ApiResponse.class) .genericType(responseType) - .connectTimeout(dominionConfig.getTimeout().getConnect()) - .readTimeout(dominionConfig.getTimeout().getResponse()) + .connectTimeout(domainConfig.getTimeout().getConnect()) + .readTimeout(domainConfig.getTimeout().getResponse()) .build(); log.debug("Request configurado: {}", request); diff --git a/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/resource/LegalCustomerProductDirectoryResource.java b/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/resource/LegalCustomerProductDirectoryResource.java index e0eac1a..513f8c0 100644 --- a/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/resource/LegalCustomerProductDirectoryResource.java +++ b/src/main/java/com/banesco/module/legal_customer_product_directory/infrastructure/resource/LegalCustomerProductDirectoryResource.java @@ -1,6 +1,6 @@ package com.banesco.module.legal_customer_product_directory.infrastructure.resource; -import com.banesco.common.application.helper.MessageResponseHelper; +import com.banesco.common.application.helper.MessageHelper; import com.banesco.common.domain.exception.HttpStatusCodeException; import com.banesco.common.domain.model.ApiResponse; import com.banesco.common.domain.model.StatusResponse; @@ -30,15 +30,15 @@ import java.util.Objects; public class LegalCustomerProductDirectoryResource { private final LegalCustomerProductDirectoryUseCase useCase; - private final MessageResponseHelper messageResponseHelper; + private final MessageHelper messageHelper; @Inject public LegalCustomerProductDirectoryResource( LegalCustomerProductDirectoryUseCase useCase, - MessageResponseHelper messageResponseHelper + MessageHelper messageHelper ) { this.useCase = useCase; - this.messageResponseHelper = messageResponseHelper; + this.messageHelper = messageHelper; } @GET @@ -344,9 +344,9 @@ public class LegalCustomerProductDirectoryResource { .build() )).build(); } catch (HttpStatusCodeException e) { - return messageResponseHelper.handleException(e); + return messageHelper.handleException(e); } catch (Exception e) { - return messageResponseHelper.handleGenericException(e); + return messageHelper.handleGenericException(e); } } } \ No newline at end of file diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index a02be5c..2f05938 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -8,13 +8,15 @@ quarkus: api: source-id: BLCPD + allowed: + app-id: '[{"appId":"DANIAPP","request":{"serviceType":"P2P","limitType":"REC","casheaIndicator":"NO"}}]' read-messages: from-props: true - busLogalCustomerProductDirectory: + bus-legal-customer-product-directory: messages: - key: 'busLogalCustomerProductDirectory' - content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validación 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"},{"backend_code":"VRN04","http_code":"503","status_code":"VRN04","description":"Servicio en horario de mantenimiento","status":"error"},{"backend_code":"204","http_code":"200","status_code":"200","description":"Cliente sin productos","status":"ok"}]' + key: 'bus-legal-customer-product-directory' + content: '[{"backendCode":"200","httpCode":200,"statusCode":"200","description":"Operacion exitosa"},{"backendCode":"R404","httpCode":404,"statusCode":"404","description":"Datos de validación 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":"204","httpCode":"200","statusCode":"200","description":"Cliente sin productos","status":"ok"}]' rest-client: - dom-legal-customer-product-directory: '{"url":"http://localhost:8083/dom-legal-customer-product-directory/retrieve/{customerIbsNumber}","timeout":{"connect":20000,"response":20000}}' - security-trace: '{"url":"http://api-register-security-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/register-security/save","timeout":{"connect":20000,"response":20000},"request":{"sp":"spAPI_Traza","eventCod":"CANCTARJ","bankCod":"01","curCod":"BS"}}' - service-status: '{"url":"http://api-get-service-status-route-apis-banesco-dev.apps.desplakur3.desintra.banesco.com/service/status","timeout":{"connect":20000,"response":20000},"request":{"applicationId": "","transactionId": "","bankService": {"bankCode": "01","serviceCode": "APIFI","eventCode": "P2PVUEL"}}}' \ No newline at end of file + dom-legal-customer-product-directory: '{"url":"http://localhost:8083/dom-legal-customer-product-directory/retrieve/{customerIbsNumber}","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","eventCod":"CANCTARJ","bankCod":"01","curCod":"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"}}}' \ No newline at end of file