diff --git a/src/main/java/com/mercadopago/client/MercadoPagoClient.java b/src/main/java/com/mercadopago/client/MercadoPagoClient.java index d9487acd..396f24ed 100644 --- a/src/main/java/com/mercadopago/client/MercadoPagoClient.java +++ b/src/main/java/com/mercadopago/client/MercadoPagoClient.java @@ -51,18 +51,7 @@ public MercadoPagoClient(MPHttpClient httpClient) { * @throws MPException exception */ protected MPResponse send(MPRequest request) throws MPException, MPApiException { - String uri = UrlFormatter.format(request.getUri(), request.getQueryParams()); - - return httpClient.send( - MPRequest.builder() - .uri(uri) - .method(request.getMethod()) - .headers(addDefaultHeaders(request)) - .payload(request.getPayload()) - .connectionRequestTimeout(addConnectionRequestTimeout(request, null)) - .connectionTimeout(addConnectionTimeout(request, null)) - .socketTimeout(addSocketTimeout(request, null)) - .build()); + return this.send(request, null); } /** @@ -75,13 +64,21 @@ protected MPResponse send(MPRequest request) throws MPException, MPApiException */ protected MPResponse send(MPRequest request, MPRequestOptions requestOptions) throws MPException, MPApiException { - return this.send( - this.buildRequest( - request.getUri(), - request.getMethod(), - request.getPayload(), - request.getQueryParams(), - requestOptions)); + String uri = UrlFormatter.format(request.getUri(), request.getQueryParams()); + Map defaultHeader = addDefaultHeaders(request); + Map addHeader = addCustomHeaders(defaultHeader, uri, requestOptions); + + return httpClient.send( + MPRequest.builder() + .uri(uri) + .accessToken(getAccessToken(requestOptions)) + .method(request.getMethod()) + .headers(addHeader) + .payload(request.getPayload()) + .connectionRequestTimeout(addConnectionRequestTimeout(request, requestOptions)) + .connectionTimeout(addConnectionTimeout(request, requestOptions)) + .socketTimeout(addSocketTimeout(request, requestOptions)) + .build()); } /** @@ -204,7 +201,7 @@ private MPRequest buildRequest( .payload(payload) .method(method) .queryParams(queryParams) - .headers(addCustomHeaders(path, requestOptions)) + .headers(addCustomHeaders(defaultHeaders, path, requestOptions)) .connectionRequestTimeout(addConnectionRequestTimeout(null, requestOptions)) .connectionTimeout(addConnectionTimeout(null, requestOptions)) .socketTimeout(addSocketTimeout(null, requestOptions)) @@ -247,9 +244,7 @@ private int addConnectionRequestTimeout(MPRequest request, MPRequestOptions requ return MercadoPagoConfig.getConnectionRequestTimeout(); } - private Map addCustomHeaders(String uri, MPRequestOptions requestOptions) { - Map headers = new HashMap<>(); - + private Map addCustomHeaders(Map headers, String uri, MPRequestOptions requestOptions) { if (Objects.nonNull(requestOptions) && Objects.nonNull(requestOptions.getCustomHeaders())) { for (Map.Entry entry : requestOptions.getCustomHeaders().entrySet()) { headers.put(entry.getKey().toLowerCase(), entry.getValue()); diff --git a/src/test/java/com/mercadopago/client/preference/PreferenceClientIT.java b/src/test/java/com/mercadopago/client/preference/PreferenceClientIT.java index 47136559..a60b6129 100644 --- a/src/test/java/com/mercadopago/client/preference/PreferenceClientIT.java +++ b/src/test/java/com/mercadopago/client/preference/PreferenceClientIT.java @@ -11,15 +11,20 @@ import com.mercadopago.client.common.AddressRequest; import com.mercadopago.client.common.IdentificationRequest; import com.mercadopago.client.common.PhoneRequest; +import com.mercadopago.core.MPRequestOptions; import com.mercadopago.exceptions.MPApiException; import com.mercadopago.exceptions.MPException; +import com.mercadopago.net.Headers; import com.mercadopago.net.MPElementsResourcesPage; import com.mercadopago.net.MPSearchRequest; import com.mercadopago.resources.preference.Preference; import com.mercadopago.resources.preference.PreferenceSearch; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.UUID; import org.junit.jupiter.api.Test; /** PreferenceClientIT class. */ @@ -82,11 +87,25 @@ void createSuccess() { void createWithRequestOptionsSuccess() { try { PreferenceRequest preferenceRequest = buildPreferenceRequest(); - Preference preference = client.create(preferenceRequest, buildRequestOptions()); + + String idempotency = UUID.randomUUID().toString(); + Map idempotencyKey = new HashMap<>(); + idempotencyKey.put(Headers.IDEMPOTENCY_KEY, idempotency); + MPRequestOptions mpRequestOptions = MPRequestOptions + .builder() + .customHeaders(idempotencyKey) + .build(); + + + Preference preference = client.create(preferenceRequest, mpRequestOptions); assertNotNull(preference.getResponse()); assertEquals(CREATED, preference.getResponse().getStatusCode()); assertNotNull(preference.getId()); + System.out.println(idempotency); + System.out.println(idempotencyKey); + System.out.println(mpRequestOptions); + System.out.println("preference: " + preference.getResponse().getHeaders()); } catch (MPApiException mpApiException) { fail(mpApiException.getApiResponse().getContent()); } catch (MPException mpException) {