Skip to content

Commit 7efdc78

Browse files
committed
Close OkHttpClient responses #21
1 parent 3e8c8ce commit 7efdc78

File tree

2 files changed

+42
-24
lines changed

2 files changed

+42
-24
lines changed

src/main/java/com/convertapi/client/Http.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,32 @@ static HttpUrl.Builder getUrlBuilder(Config config) {
4242
static CompletableFuture<InputStream> requestGet(String url) {
4343
return CompletableFuture.supplyAsync(() -> {
4444
Request request = getRequestBuilder().url(url).build();
45-
Response response;
4645
try {
47-
response = getClient().newCall(request).execute();
46+
Response response = getClient().newCall(request).execute();
47+
ResponseBody body = response.body();
48+
if (body != null) {
49+
if (response.code() != 200) {
50+
throw new ConversionException(body.string(), response.code());
51+
}
52+
return body.byteStream();
53+
} else {
54+
throw new ConversionException("Response body is empty", response.code());
55+
}
4856
} catch (IOException e) {
4957
throw new RuntimeException(e);
5058
}
51-
//noinspection ConstantConditions
52-
return response.body().byteStream();
5359
});
5460
}
5561

5662
static CompletableFuture<Void> requestDelete(String url) {
5763
return CompletableFuture.supplyAsync(() -> {
5864
Request request = getRequestBuilder().delete().url(url).build();
5965
try {
60-
getClient().newCall(request).execute();
66+
getClient().newCall(request).execute().close();
67+
return null;
6168
} catch (IOException e) {
6269
throw new RuntimeException(e);
6370
}
64-
return null;
6571
});
6672
}
6773

@@ -77,8 +83,8 @@ static RemoteUploadResponse remoteUpload(String urlToFile, Config config) {
7783
.build();
7884

7985
Request request = Http.getRequestBuilder()
80-
.url(url)
81-
.method("POST", RequestBody.create(null, ""))
86+
.url(url)
87+
.method("POST", RequestBody.create("", null))
8288
.addHeader("Accept", "application/json")
8389
.build();
8490

@@ -95,4 +101,4 @@ static RemoteUploadResponse remoteUpload(String urlToFile, Config config) {
95101

96102
return new Gson().fromJson(bodyString, RemoteUploadResponse.class);
97103
}
98-
}
104+
}

src/main/java/com/convertapi/client/Param.java

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import okhttp3.MediaType;
44
import okhttp3.Request;
5+
import okhttp3.Response;
6+
import okhttp3.ResponseBody;
57

68
import java.io.IOException;
79
import java.io.InputStream;
@@ -101,33 +103,43 @@ public List<String> getValue() throws ExecutionException, InterruptedException {
101103
return this.value.get();
102104
}
103105

104-
public CompletableFuture<Void> delete() {
105-
return isUploadedFile
106-
? value.thenCompose(urls -> Http.requestDelete(urls.get(0)))
107-
: CompletableFuture.completedFuture(null);
108-
}
109-
110106
private static CompletableFuture<List<String>> upload(InputStream stream, String fileName, Config config) {
111107
return CompletableFuture.supplyAsync(() -> {
112108
Request request = Http.getRequestBuilder()
113-
.url(Http.getUrlBuilder(config).addPathSegment("upload")
114-
.addQueryParameter("filename", fileName)
115-
.build())
116-
.post(RequestBodyStream.create(MediaType.parse("application/octet-stream"), stream))
117-
.build();
118-
try {
119-
String id = Http.getClient().newCall(request).execute().body().string();
120-
return Collections.singletonList(id);
109+
.url(Http.getUrlBuilder(config).addPathSegment("upload")
110+
.addQueryParameter("filename", fileName)
111+
.build())
112+
.post(RequestBodyStream.create(MediaType.parse("application/octet-stream"), stream))
113+
.build();
114+
115+
try (Response response = Http.getClient().newCall(request).execute()) {
116+
ResponseBody body = response.body();
117+
if (body != null) {
118+
if (response.code() != 200) {
119+
throw new ConversionException(body.string(), response.code());
120+
}
121+
String id = body.string();
122+
return Collections.singletonList(id);
123+
} else {
124+
throw new ConversionException("Response body is empty", response.code());
125+
}
121126
} catch (IOException e) {
122127
throw new RuntimeException(e);
123128
}
124129
});
125130
}
126131

132+
@SuppressWarnings("unused")
133+
public CompletableFuture<Void> delete() {
134+
return isUploadedFile
135+
? value.thenCompose(urls -> Http.requestDelete(urls.get(0)))
136+
: CompletableFuture.completedFuture(null);
137+
}
138+
127139
public static Param[] concat(Param[] a, Param[] b) {
128140
Param[] result = new Param[a.length + b.length];
129141
System.arraycopy(a, 0, result, 0, a.length);
130142
System.arraycopy(b, 0, result, a.length, b.length);
131143
return result;
132144
}
133-
}
145+
}

0 commit comments

Comments
 (0)