diff --git a/api30.sdk/pom.xml b/api30.sdk/pom.xml
index e7818ba..c7a8211 100644
--- a/api30.sdk/pom.xml
+++ b/api30.sdk/pom.xml
@@ -4,7 +4,7 @@
br.cielo.cieloecommerce
api30.sdk
- 0.0.4-SNAPSHOT
+ 0.0.5-SNAPSHOT
jar
api30.sdk
diff --git a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/CieloEcommerce.java b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/CieloEcommerce.java
index b5818c0..67e3098 100644
--- a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/CieloEcommerce.java
+++ b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/CieloEcommerce.java
@@ -2,7 +2,7 @@
import cieloecommerce.sdk.Merchant;
import cieloecommerce.sdk.ecommerce.request.*;
-import org.apache.http.client.HttpClient;
+import org.apache.http.impl.client.CloseableHttpClient;
import java.io.IOException;
@@ -12,7 +12,7 @@
public class CieloEcommerce {
private final Merchant merchant;
private final Environment environment;
- private HttpClient httpClient;
+ private CloseableHttpClient httpClient;
/**
* Create an instance of CieloEcommerce choosing the environment where the
@@ -39,7 +39,7 @@ public CieloEcommerce(Merchant merchant) {
this(merchant, Environment.PRODUCTION);
}
- public void setHttpClient(HttpClient httpClient) {
+ public void setHttpClient(CloseableHttpClient httpClient) {
this.httpClient = httpClient;
}
@@ -69,7 +69,7 @@ public Sale createSale(Sale sale) throws IOException, CieloRequestException {
/**
* Create a card token to be stored on store
- *
+ *
* @param cardToken
* The credit card data
* @return The card token
@@ -112,7 +112,7 @@ public Sale querySale(String paymentId) throws IOException, CieloRequestExceptio
return sale;
}
-
+
/**
* Query a Sale on Cielo by paymentId
*
@@ -136,7 +136,7 @@ public QueryMerchantOrderResponse queryMerchantOrder(String merchantOrderId) thr
return merchantOrder;
}
-
+
/**
* Query a RecurrentSale on Cielo by recurrentPaymentId
diff --git a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/AbstractSaleRequest.java b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/AbstractSaleRequest.java
index 6a7ee79..ed03325 100644
--- a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/AbstractSaleRequest.java
+++ b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/AbstractSaleRequest.java
@@ -1,22 +1,18 @@
package cieloecommerce.sdk.ecommerce.request;
-import java.io.BufferedReader;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
import java.util.UUID;
-import java.util.zip.GZIPInputStream;
-import org.apache.http.Header;
import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import com.google.gson.Gson;
import cieloecommerce.sdk.Environment;
import cieloecommerce.sdk.Merchant;
+import org.apache.http.util.EntityUtils;
/**
* Abstraction to reuse most of the code that send and receive the HTTP
@@ -25,7 +21,7 @@
public abstract class AbstractSaleRequest {
final Environment environment;
private final Merchant merchant;
- private HttpClient httpClient;
+ private CloseableHttpClient httpClient;
AbstractSaleRequest(Merchant merchant, Environment environment) {
this.merchant = merchant;
@@ -34,7 +30,7 @@ public abstract class AbstractSaleRequest {
public abstract Response execute(Request param) throws IOException, CieloRequestException;
- public void setHttpClient(HttpClient httpClient) {
+ public void setHttpClient(CloseableHttpClient httpClient) {
this.httpClient = httpClient;
}
@@ -48,7 +44,7 @@ public void setHttpClient(HttpClient httpClient) {
* @throws IOException
* yeah, deal with it
*/
- HttpResponse sendRequest(HttpUriRequest request) throws IOException {
+ CloseableHttpResponse sendRequest(HttpUriRequest request) throws IOException {
if (httpClient == null) {
httpClient = HttpClientBuilder.create().build();
}
@@ -67,33 +63,22 @@ HttpResponse sendRequest(HttpUriRequest request) throws IOException {
/**
* Read the response body sent by Cielo
*
- * @param response
- * HttpResponse by Cielo, with headers, status code, etc.
+ * @param response HttpResponse by Cielo, with headers, status code, etc.
* @return An instance of Sale with the response entity sent by Cielo.
- * @throws IOException
- * yeah, deal with it
+ * @throws IOException yeah, deal with it
* @throws CieloRequestException
*/
- Response readResponse(HttpResponse response, Class responseClassOf)
- throws IOException, CieloRequestException {
- HttpEntity responseEntity = response.getEntity();
- InputStream responseEntityContent = responseEntity.getContent();
-
- Header contentEncoding = response.getFirstHeader("Content-Encoding");
-
- if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) {
- responseEntityContent = new GZIPInputStream(responseEntityContent);
+ Response readResponse(CloseableHttpResponse response, Class responseClassOf)
+ throws IOException, CieloRequestException {
+ try {
+ HttpEntity responseEntity = response.getEntity();
+ final String responseBody = EntityUtils.toString(responseEntity);
+ EntityUtils.consume(responseEntity);
+ return parseResponse(response.getStatusLine().getStatusCode(), responseBody,
+ responseClassOf);
+ } finally {
+ response.close();
}
-
- BufferedReader responseReader = new BufferedReader(new InputStreamReader(responseEntityContent));
- StringBuilder responseBuilder = new StringBuilder();
- String line;
-
- while ((line = responseReader.readLine()) != null) {
- responseBuilder.append(line);
- }
-
- return parseResponse(response.getStatusLine().getStatusCode(), responseBuilder.toString(), responseClassOf);
}
/**
diff --git a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/CreateCartTokenRequest.java b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/CreateCartTokenRequest.java
index 08dba25..c061e46 100644
--- a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/CreateCartTokenRequest.java
+++ b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/CreateCartTokenRequest.java
@@ -2,7 +2,7 @@
import java.io.IOException;
-import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
@@ -24,7 +24,7 @@ public CardToken execute(CardToken param) throws IOException, CieloRequestExcept
request.setEntity(new StringEntity(new GsonBuilder().create().toJson(param)));
- HttpResponse response = sendRequest(request);
+ CloseableHttpResponse response = sendRequest(request);
return readResponse(response, CardToken.class);
}
diff --git a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/CreateSaleRequest.java b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/CreateSaleRequest.java
index 01656b6..6c033a2 100644
--- a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/CreateSaleRequest.java
+++ b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/CreateSaleRequest.java
@@ -3,7 +3,7 @@
import java.io.IOException;
import org.apache.commons.codec.Charsets;
-import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
@@ -29,7 +29,7 @@ public Sale execute(Sale param) throws IOException, CieloRequestException {
request.setEntity(new StringEntity(new GsonBuilder().create().toJson(param),
ContentType.create(ContentType.APPLICATION_JSON.getMimeType(), Charsets.UTF_8.name())));
- HttpResponse response = sendRequest(request);
+ CloseableHttpResponse response = sendRequest(request);
return readResponse(response, Sale.class);
}
diff --git a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/DeactivateRecurrentSaleRequest.java b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/DeactivateRecurrentSaleRequest.java
index e767cfb..7cffac0 100644
--- a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/DeactivateRecurrentSaleRequest.java
+++ b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/DeactivateRecurrentSaleRequest.java
@@ -3,7 +3,7 @@
import cieloecommerce.sdk.Environment;
import cieloecommerce.sdk.Merchant;
import cieloecommerce.sdk.ecommerce.RecurrentSale;
-import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPut;
import java.io.IOException;
@@ -18,7 +18,7 @@ public RecurrentSale execute(String recurrentPaymentId) throws IOException, Ciel
String url = environment.getApiUrl() + "1/RecurrentPayment/" + recurrentPaymentId + "/Deactivate";
HttpPut request = new HttpPut(url);
- HttpResponse response = sendRequest(request);
+ CloseableHttpResponse response = sendRequest(request);
return readResponse(response, RecurrentSale.class);
}
diff --git a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QueryMerchantOrderRequest.java b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QueryMerchantOrderRequest.java
index 3b501cc..1a33e1d 100644
--- a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QueryMerchantOrderRequest.java
+++ b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QueryMerchantOrderRequest.java
@@ -2,7 +2,7 @@
import java.io.IOException;
-import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import cieloecommerce.sdk.Environment;
@@ -22,9 +22,9 @@ public QueryMerchantOrderResponse execute(String merchnatOrderId) throws IOExcep
String url = environment.getApiQueryURL() + "1/sales?merchantOrderId=" + merchnatOrderId;
HttpGet request = new HttpGet(url);
- HttpResponse response = sendRequest(request);
+ CloseableHttpResponse response = sendRequest(request);
return readResponse(response, QueryMerchantOrderResponse.class);
}
-
+
}
diff --git a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QueryRecurrentSaleRequest.java b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QueryRecurrentSaleRequest.java
index e3a4c38..2aa9d68 100644
--- a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QueryRecurrentSaleRequest.java
+++ b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QueryRecurrentSaleRequest.java
@@ -2,7 +2,7 @@
import java.io.IOException;
-import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import cieloecommerce.sdk.Environment;
@@ -19,7 +19,7 @@ public RecurrentSale execute(String recurrentPaymentId) throws IOException, Ciel
String url = environment.getApiQueryURL() + "1/RecurrentPayment/" + recurrentPaymentId;
HttpGet request = new HttpGet(url);
- HttpResponse response = sendRequest(request);
+ CloseableHttpResponse response = sendRequest(request);
return readResponse(response, RecurrentSale.class);
}
diff --git a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QuerySaleRequest.java b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QuerySaleRequest.java
index 817ba85..9899a11 100644
--- a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QuerySaleRequest.java
+++ b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/QuerySaleRequest.java
@@ -2,7 +2,7 @@
import java.io.IOException;
-import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import cieloecommerce.sdk.Environment;
@@ -22,7 +22,7 @@ public Sale execute(String paymentId) throws IOException, CieloRequestException
String url = environment.getApiQueryURL() + "1/sales/" + paymentId;
HttpGet request = new HttpGet(url);
- HttpResponse response = sendRequest(request);
+ CloseableHttpResponse response = sendRequest(request);
return readResponse(response, Sale.class);
}
diff --git a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/UpdateSaleRequest.java b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/UpdateSaleRequest.java
index fd4a1eb..23dbf1f 100644
--- a/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/UpdateSaleRequest.java
+++ b/api30.sdk/src/main/java/cieloecommerce/sdk/ecommerce/request/UpdateSaleRequest.java
@@ -3,7 +3,7 @@
import cieloecommerce.sdk.Environment;
import cieloecommerce.sdk.Merchant;
import cieloecommerce.sdk.ecommerce.SaleResponse;
-import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.utils.URIBuilder;
@@ -43,7 +43,7 @@ public SaleResponse execute(String paymentId) throws IOException, CieloRequestEx
request = new HttpPut(builder.build().toString());
- HttpResponse response = sendRequest(request);
+ CloseableHttpResponse response = sendRequest(request);
sale = readResponse(response, SaleResponse.class);
} catch (URISyntaxException e) {