Skip to content

Commit 9ae198d

Browse files
committed
Enabled httpClient replacement
Works on #1 (comment)
1 parent 5d47575 commit 9ae198d

File tree

2 files changed

+22
-17
lines changed

2 files changed

+22
-17
lines changed

src/main/java/io/codebottle/api/CodeBottle.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.codebottle.api;
22

33
import java.util.Collection;
4-
import java.util.Collections;
54
import java.util.List;
65
import java.util.Map;
76
import java.util.Optional;
@@ -16,30 +15,33 @@
1615
import io.codebottle.api.model.Snippet;
1716
import io.codebottle.api.rest.CodeBottleRequest;
1817
import io.codebottle.api.rest.Endpoint;
18+
import lombok.Builder;
19+
import lombok.Getter;
20+
import okhttp3.OkHttpClient;
1921
import org.jetbrains.annotations.Nullable;
2022

23+
@Builder
2124
public final class CodeBottle {
2225
public final CompletionStage<Void> lazyLoading;
2326

2427
private final Map<String, Language> languageCache = new ConcurrentHashMap<>();
2528
private final Map<String, Category> categoryCache = new ConcurrentHashMap<>();
2629
private final Map<String, Snippet> snippetCache = new ConcurrentHashMap<>();
27-
private final String token;
28-
29-
public CodeBottle() {
30-
this(null);
31-
}
32-
33-
public CodeBottle(@Nullable String token) {
34-
this.token = token;
30+
31+
@Builder.Default
32+
private final @Nullable String token = null;
33+
@Builder.Default
34+
private @Getter final OkHttpClient httpClient = new OkHttpClient.Builder().build();
3535

36+
{
3637
this.lazyLoading = CompletableFuture.allOf(requestLanguages(), requestCategories());
3738
}
3839

40+
@SuppressWarnings("ConstantConditions")
3941
public Optional<String> getToken() {
4042
return Optional.ofNullable(token);
4143
}
42-
44+
4345
public Optional<Language> getLanguageByID(String id) {
4446
return Optional.ofNullable(languageCache.get(id));
4547
}
@@ -176,7 +178,7 @@ public Optional<Snippet.Revision> getSnippetRevisionByID(String snippetId, int i
176178
return Optional.ofNullable(snippetCache.get(snippetId))
177179
.flatMap(snippet -> snippet.getRevisionByID(id));
178180
}
179-
181+
180182
public Collection<Snippet.Revision> getSnippetRevisions() {
181183
return snippetCache.values()
182184
.stream()

src/main/java/io/codebottle/api/rest/CodeBottleRequest.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import io.codebottle.api.rest.exception.UnexpectedStatusCodeException;
1313
import okhttp3.Call;
1414
import okhttp3.MediaType;
15-
import okhttp3.OkHttpClient;
1615
import okhttp3.Request;
1716
import okhttp3.RequestBody;
1817
import okhttp3.Response;
@@ -43,19 +42,18 @@ public final class CodeBottleRequest<T> {
4342
*/
4443

4544
private final static ObjectMapper objectMapper;
46-
private final static OkHttpClient httpClient;
4745

4846
private final Request.Builder httpRequest;
47+
private final CodeBottle context;
4948

5049
private int expected = HTTPCodes.OK;
5150

5251
static {
5352
objectMapper = new ObjectMapper();
54-
httpClient = new OkHttpClient.Builder()
55-
.build();
5653
}
5754

5855
public CodeBottleRequest(CodeBottle context) {
56+
this.context = context;
5957
this.httpRequest = new Request.Builder()
6058
.addHeader("Accept", "application/vnd.codebottle.v1+json"); // fixed request header
6159

@@ -64,6 +62,10 @@ public CodeBottleRequest(CodeBottle context) {
6462
context.getToken().ifPresent(token -> httpRequest.addHeader("Authorization", token));
6563
}
6664

65+
public CodeBottle getContext() {
66+
return context;
67+
}
68+
6769
public CodeBottleRequest<T> make(Method method, JsonNode withData) {
6870
httpRequest.method(method.name(), method == Method.GET ? null : RequestBody.create(withData.toString(), MediaType.parse("application/json")));
6971

@@ -84,7 +86,7 @@ public CodeBottleRequest<T> to(Endpoint endpoint, Object... at) throws IllegalAr
8486

8587
public CodeBottleRequest<T> andExpect(@MagicConstant(valuesFromClass = HTTPCodes.class) int responseCode) throws IllegalArgumentException {
8688
this.expected = responseCode;
87-
89+
8890
return this;
8991
}
9092

@@ -95,7 +97,8 @@ public CompletableFuture<T> then(Function<JsonNode, T> remap) {
9597
System.out.println("Requesting: " + request.method() + " @ " + request.url().toString());
9698

9799
try {
98-
final Call call = httpClient.newCall(request);
100+
final Call call = context.getHttpClient()
101+
.newCall(request);
99102

100103
final Response response = call.execute();
101104
final ResponseBody body = response.body();

0 commit comments

Comments
 (0)