Skip to content

Commit 9a5a70d

Browse files
committed
Allow build custom HTTP client
1 parent fb4bbf8 commit 9a5a70d

File tree

4 files changed

+42
-8
lines changed

4 files changed

+42
-8
lines changed

src/com/convertapi/Config.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package com.convertapi;
22

3+
import okhttp3.OkHttpClient;
4+
5+
import java.util.function.Function;
6+
37
public class Config {
48
private static String defaultSecret;
9+
private static Function<OkHttpClient.Builder, OkHttpClient.Builder> defaultHttpClientBuilder = b -> b;
510
private static final String SCHEME = "https";
611
@SuppressWarnings("SpellCheckingInspection")
712
private static final String HOST = "v2.convertapi.com";
@@ -10,30 +15,42 @@ public class Config {
1015
private final String host;
1116
private final String secret;
1217
private final int timeout;
18+
private final Function<OkHttpClient.Builder, OkHttpClient.Builder> httpClientBuilder;
1319

1420
@SuppressWarnings("unused")
15-
public Config(String secret, String scheme, String host, int timeout) {
21+
public Config(String secret, String scheme, String host, int timeout, Function<OkHttpClient.Builder, OkHttpClient.Builder> httpClientBuilder) {
1622
this.scheme = scheme;
1723
this.host = host;
1824
this.secret = secret;
1925
this.timeout = timeout;
26+
this.httpClientBuilder = httpClientBuilder;
2027
}
2128

2229
@SuppressWarnings("WeakerAccess")
2330
public static Config defaults() {
24-
return new Config(Config.defaultSecret, SCHEME, HOST, TIMEOUT);
31+
return new Config(Config.defaultSecret, SCHEME, HOST, TIMEOUT, Config.defaultHttpClientBuilder);
2532
}
2633

2734
@SuppressWarnings("WeakerAccess")
2835
public static Config defaults(String secret) {
29-
return new Config(secret, SCHEME, HOST, TIMEOUT);
36+
return new Config(secret, SCHEME, HOST, TIMEOUT, Config.defaultHttpClientBuilder);
37+
}
38+
39+
@SuppressWarnings("WeakerAccess")
40+
public static Config defaults(String secret, Function<OkHttpClient.Builder, OkHttpClient.Builder> httpClientBuilder) {
41+
return new Config(secret, SCHEME, HOST, TIMEOUT, httpClientBuilder);
3042
}
3143

3244
@SuppressWarnings("unused")
3345
public static void setDefaultSecret(String defaultSecret) {
3446
Config.defaultSecret = defaultSecret;
3547
}
3648

49+
@SuppressWarnings("unused")
50+
public static void setDefaultHttpBuilder(Function<OkHttpClient.Builder, OkHttpClient.Builder> httpClientBuilder) {
51+
Config.defaultHttpClientBuilder = httpClientBuilder;
52+
}
53+
3754
int getTimeout() {
3855
return timeout;
3956
}
@@ -49,4 +66,8 @@ String getHost() {
4966
String getSecret() {
5067
return secret;
5168
}
69+
70+
Function<OkHttpClient.Builder, OkHttpClient.Builder> getHttpClientBuilder() {
71+
return httpClientBuilder;
72+
}
5273
}

src/com/convertapi/ConvertApi.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,15 @@ public static CompletableFuture<ConversionResult> convert(String fromFormat, Str
5353
}
5454
}
5555

56-
Request request = new Request.Builder()
56+
Request request = Http.getRequestBuilder()
5757
.url(url)
5858
.addHeader("Accept", "application/json")
5959
.post(multipartBuilder.build())
6060
.build();
6161

6262
String bodyString;
6363
try {
64-
Response response = Http.getClient().newCall(request).execute();
64+
Response response = Http.getClient(config).newCall(request).execute();
6565
//noinspection ConstantConditions
6666
bodyString = response.body().string();
6767
if (response.code() != 200) {
@@ -84,7 +84,7 @@ public static User getUser() {
8484

8585
public static User getUser(Config config) {
8686
HttpUrl url = Http.getUrlBuilder(config).addPathSegment("user").build();
87-
Request request = new Request.Builder()
87+
Request request = Http.getRequestBuilder()
8888
.url(url)
8989
.addHeader("Accept", "application/json")
9090
.build();

src/com/convertapi/Http.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.io.IOException;
99
import java.io.InputStream;
1010
import java.util.concurrent.CompletableFuture;
11+
import java.util.concurrent.TimeUnit;
1112

1213
class Http {
1314
private static final OkHttpClient client = new OkHttpClient();
@@ -16,6 +17,13 @@ static OkHttpClient getClient() {
1617
return client;
1718
}
1819

20+
static OkHttpClient getClient(Config config) {
21+
return config.getHttpClientBuilder()
22+
.apply(getClient().newBuilder())
23+
.readTimeout(config.getTimeout() + 5, TimeUnit.SECONDS)
24+
.build();
25+
}
26+
1927
static HttpUrl.Builder getUrlBuilder(Config config) {
2028
return new HttpUrl.Builder()
2129
.scheme(config.getScheme())
@@ -26,7 +34,7 @@ static HttpUrl.Builder getUrlBuilder(Config config) {
2634

2735
static CompletableFuture<InputStream> requestGet(String url) {
2836
return CompletableFuture.supplyAsync(() -> {
29-
Request request = new Request.Builder().url(url).build();
37+
Request request = getRequestBuilder().url(url).build();
3038
Response response;
3139
try {
3240
response = getClient().newCall(request).execute();
@@ -37,4 +45,9 @@ static CompletableFuture<InputStream> requestGet(String url) {
3745
return response.body().byteStream();
3846
});
3947
}
48+
49+
static Request.Builder getRequestBuilder() {
50+
return new Request.Builder()
51+
.header("User-Agent", "convertapi-java");
52+
}
4053
}

src/com/convertapi/Param.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public List<String> getValue() throws ExecutionException, InterruptedException {
9696

9797
private static CompletableFuture<List<String>> upload(byte[] data, String fileName, MediaType fileContentType, Config config) {
9898
return CompletableFuture.supplyAsync(() -> {
99-
Request request = new Request.Builder()
99+
Request request = Http.getRequestBuilder()
100100
.url(Http.getUrlBuilder(config).addPathSegment("upload")
101101
.addQueryParameter("filename", fileName)
102102
.build())

0 commit comments

Comments
 (0)