Skip to content

Commit ae58f73

Browse files
committed
Adicionado funcionalidade para download de binários
1 parent e833263 commit ae58f73

File tree

4 files changed

+47
-27
lines changed

4 files changed

+47
-27
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.idea
22
target/
33
pom.xml.tag
4+
http-request.iml
45
pom.xml.releaseBackup
56
pom.xml.versionsBackup
67
pom.xml.next

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<groupId>com.github.nidorx</groupId>
1010
<artifactId>http-request</artifactId>
11-
<version>1.0.0</version>
11+
<version>1.0.2</version>
1212

1313
<packaging>jar</packaging>
1414

src/main/java/com/github/nidorx/http/HttpRequest.java

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,24 @@
2020
*/
2121
public final class HttpRequest {
2222

23-
/**
24-
* Permite a depuração dos detalhes da requisição sendo efetuada
25-
*/
26-
public static boolean DEBUG = false;
27-
2823
public static final String HEADER_HOST = "Host";
29-
3024
public static final String HEADER_COOKIE = "Cookie";
31-
3225
public static final String HEADER_ACCEPT = "Accept";
33-
3426
public static final String HEADER_ORIGIN = "Origin";
35-
3627
public static final String HEADER_USER_AGENT = "User-Agent";
37-
3828
public static final String HEADER_SET_COOKIE = "Set-Cookie";
39-
4029
public static final String HEADER_CONTENT_TYPE = "Content-Type";
41-
4230
public static final String HEADER_AUTHORIZATION = "Authorization";
43-
4431
public static final String HEADER_ACCEPT_ENCODING = "Accept-Encoding";
45-
4632
public static final String HEADER_CONTENT_LANGUAGE = "Content-Language";
47-
4833
/**
4934
* Salva a compilação dos regex usados para fazer alteração no PATH de endpoints
5035
*/
5136
private static final Map<String, Pattern> PATH_REGEX_CACHED = new ConcurrentHashMap<>();
52-
37+
/**
38+
* Permite a depuração dos detalhes da requisição sendo efetuada
39+
*/
40+
public static boolean DEBUG = false;
5341
private final String url;
5442

5543
private final Map<String, String> data = new HashMap<>();
@@ -62,6 +50,8 @@ public final class HttpRequest {
6250

6351
private int timeout;
6452

53+
private boolean binary;
54+
6555
private String method;
6656

6757
private String userAgent;
@@ -181,6 +171,18 @@ public HttpRequest timeout(final int timeout) {
181171
return this;
182172
}
183173

174+
175+
/**
176+
* Define que o resultado esperado é um binário. Ex. Download
177+
*
178+
* @param binary
179+
* @return
180+
*/
181+
public HttpRequest binary(final boolean binary) {
182+
this.binary = binary;
183+
return this;
184+
}
185+
184186
/**
185187
* Define o UserAgent
186188
*
@@ -551,9 +553,6 @@ private <T> HttpResponse executeRequest() throws ProtocolException, MalformedURL
551553
}
552554

553555

554-
// Accept-Encoding : gzip
555-
reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
556-
557556
// Obtém os headers da conexão
558557
response.headers = new HashMap<>(connection.getHeaderFields());
559558

@@ -582,14 +581,32 @@ private <T> HttpResponse executeRequest() throws ProtocolException, MalformedURL
582581
// Seta a referencia para o gerenciador de cookie usado na resposta
583582
response.cookieManager = this.cookieManager;
584583

585-
in = new BufferedReader(reader);
586-
final StringBuilder body = new StringBuilder();
587-
String inputLine;
588-
while ((inputLine = in.readLine()) != null) {
589-
body.append(inputLine);
590-
body.append('\r');
584+
if (this.binary) {
585+
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
586+
587+
int nRead;
588+
byte[] data = new byte[16384];
589+
590+
while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
591+
buffer.write(data, 0, nRead);
592+
}
593+
594+
response.data = buffer.toByteArray();
595+
} else {
596+
597+
// Accept-Encoding : gzip
598+
reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
599+
600+
in = new BufferedReader(reader);
601+
final StringBuilder body = new StringBuilder();
602+
String inputLine;
603+
while ((inputLine = in.readLine()) != null) {
604+
body.append(inputLine);
605+
body.append('\r');
606+
}
607+
response.content = body.toString();
591608
}
592-
response.content = body.toString();
609+
593610

594611
return response;
595612
} finally {

src/main/java/com/github/nidorx/http/HttpResponse.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ public class HttpResponse {
2121

2222
public String content;
2323

24+
public byte[] data;
25+
2426
public CookieManager cookieManager;
2527

2628
public Map<String, Object> asJson() throws Exception {

0 commit comments

Comments
 (0)