Skip to content

Commit 3b3a04f

Browse files
committed
Allow customized interceptors
1 parent e808f45 commit 3b3a04f

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<modelVersion>4.0.0</modelVersion>
77
<groupId>com.taboola</groupId>
88
<artifactId>api-java-client-core</artifactId>
9-
<version>1.0.6</version>
9+
<version>1.0.7</version>
1010

1111
<name>${project.groupId}:${project.artifactId}</name>
1212
<description>API Java client core</description>

src/main/java/com/taboola/rest/api/RestAPIClient.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.taboola.rest.api;
22

3+
import okhttp3.Interceptor;
4+
35
import java.util.ArrayList;
46
import java.util.Collection;
57
import java.util.List;
@@ -51,7 +53,7 @@ public static RestAPIClientBuilder builder() {
5153
}
5254

5355
public static class RestAPIClientBuilder {
54-
private static final String VERSION = "1.0.6";
56+
private static final String VERSION = "1.0.7";
5557
private static final Integer DEFAULT_MAX_IDLE_CONNECTIONS = 5;
5658
private static final Long DEFAULT_KEEP_ALIVE_DURATION_MILLIS = 300_000L;
5759
private static final SerializationConfig DEFAULT_SERIALIZATION_CONFIG = new SerializationConfig();
@@ -78,6 +80,7 @@ public static class RestAPIClientBuilder {
7880
private final StringResponseFactories stringResponseFactories = new StringResponseFactories();
7981
private HttpLoggingLevel loggingLevel;
8082
private CommunicationInterceptor communicationInterceptor;
83+
private List<Interceptor> interceptors = new ArrayList<>();
8184

8285
public RestAPIClientBuilder setLoggingLevel(HttpLoggingLevel loggingLevel) {
8386
this.loggingLevel = loggingLevel;
@@ -164,12 +167,17 @@ public RestAPIClientBuilder addStringBodyResponseFactory(Class<?> clazz, StringR
164167
return this;
165168
}
166169

170+
public RestAPIClientBuilder addInterceptor(Interceptor interceptor) {
171+
interceptors.add(interceptor);
172+
return this;
173+
}
174+
167175
public RestAPIClient build() {
168176
organizeState();
169177
String finalUserAgent = String.format("%s/%s/%s (%s)", userAgentPrefix, restAPIVersion, VERSION, userAgentSuffix);
170178
Collection<RequestHeader> headers = getAllHeaders(this.headers, finalUserAgent);
171179
CommunicationConfig config = new CommunicationConfig(baseUrl, connectionTimeoutMillis, readTimeoutMillis, writeTimeoutMillis, maxIdleConnections,
172-
keepAliveDurationMillis, headers, debug, exceptionFactory, objectMapper, stringResponseFactories, loggingLevel, communicationInterceptor);
180+
keepAliveDurationMillis, headers, debug, exceptionFactory, objectMapper, stringResponseFactories, loggingLevel, communicationInterceptor, interceptors);
173181
return new RestAPIClient(new CommunicationFactory(config));
174182
}
175183

src/main/java/com/taboola/rest/api/internal/CommunicationFactory.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,19 @@ private Retrofit.Builder createRetrofitBuilder(CommunicationConfig config) {
5656
}
5757

5858
private OkHttpClient createOkHttpClient(CommunicationConfig config) {
59-
return new OkHttpClient.Builder()
59+
OkHttpClient.Builder builder = new OkHttpClient.Builder()
6060
.addInterceptor(new HeadersInterceptor(config.getHeaders()))
6161
.addInterceptor(createLoggingInterceptor(config))
6262
.addInterceptor(new ImmutableRequestResponseInterceptor(config.getCommunicationInterceptor()))
6363
.readTimeout(config.getReadTimeoutMillis(), TimeUnit.MILLISECONDS)
6464
.writeTimeout(config.getWriteTimeoutMillis(), TimeUnit.MILLISECONDS)
6565
.connectTimeout(config.getConnectionTimeoutMillis(), TimeUnit.MILLISECONDS)
6666
.connectionPool(new ConnectionPool(config.getMaxIdleConnections(),
67-
config.getKeepAliveDurationMillis(), TimeUnit.MILLISECONDS))
68-
.build();
67+
config.getKeepAliveDurationMillis(), TimeUnit.MILLISECONDS));
68+
69+
config.getInterceptors().forEach(builder::addInterceptor);
70+
71+
return builder.build();
6972
}
7073

7174

src/main/java/com/taboola/rest/api/internal/config/CommunicationConfig.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.taboola.rest.api.internal.config;
22

33

4+
import okhttp3.Interceptor;
5+
46
import java.util.Collection;
57

68
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -31,12 +33,13 @@ public class CommunicationConfig {
3133
private final StringResponseFactories stringResponseFactories;
3234
private final HttpLoggingLevel loggingLevel;
3335
private final CommunicationInterceptor communicationInterceptor;
36+
private final Collection<Interceptor> interceptors;
3437

3538
public CommunicationConfig(String baseUrl, Long connectionTimeoutMillis, Long readTimeoutMillis,
3639
Long writeTimeoutMillis, Integer maxIdleConnections, Long keepAliveDurationMillis,
3740
Collection<RequestHeader> headers, boolean debug, ExceptionFactory exceptionFactory,
3841
ObjectMapper objectMapper, StringResponseFactories stringResponseFactories, HttpLoggingLevel loggingLevel,
39-
CommunicationInterceptor communicationInterceptor) {
42+
CommunicationInterceptor communicationInterceptor, Collection<Interceptor> interceptors) {
4043
this.baseUrl = baseUrl;
4144
this.connectionTimeoutMillis = connectionTimeoutMillis;
4245
this.readTimeoutMillis = readTimeoutMillis;
@@ -50,6 +53,7 @@ public CommunicationConfig(String baseUrl, Long connectionTimeoutMillis, Long re
5053
this.stringResponseFactories = stringResponseFactories;
5154
this.loggingLevel = loggingLevel;
5255
this.communicationInterceptor = communicationInterceptor;
56+
this.interceptors = interceptors;
5357
}
5458

5559
public String getBaseUrl() {
@@ -104,6 +108,10 @@ public CommunicationInterceptor getCommunicationInterceptor() {
104108
return communicationInterceptor;
105109
}
106110

111+
public Collection<Interceptor> getInterceptors() {
112+
return interceptors;
113+
}
114+
107115
@Override
108116
public String toString() {
109117
return "CommunicationConfig{" +
@@ -120,6 +128,7 @@ public String toString() {
120128
", stringResponseFactories=" + stringResponseFactories +
121129
", loggingLevel=" + loggingLevel +
122130
", communicationInterceptor=" + communicationInterceptor +
131+
", interceptors=" + interceptors +
123132
'}';
124133
}
125134
}

src/test/java/com/taboola/rest/api/internal/CommunicationFactoryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public void beforeTest() {
3939
CommunicationConfig communicationConfig = new CommunicationConfig("http://localhost",
4040
1L, 1L, 1L, 1, 60L,
4141
Collections.singleton(new UserAgentHeader("Dummy-Agent")),true, new DefaultExceptionFactory(),
42-
new ObjectMapper(), new StringResponseFactories(), HttpLoggingLevel.BASIC, new NoOpCommunicationInterceptor());
42+
new ObjectMapper(), new StringResponseFactories(), HttpLoggingLevel.BASIC, new NoOpCommunicationInterceptor(), Collections.emptyList());
4343
testInstance = new CommunicationFactory(communicationConfig);
4444
}
4545

0 commit comments

Comments
 (0)