Skip to content

Commit 056e7d8

Browse files
committed
Remove customized interceptors and add RequestHeaders
1 parent 3b3a04f commit 056e7d8

File tree

6 files changed

+45
-26
lines changed

6 files changed

+45
-26
lines changed

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

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

3-
import okhttp3.Interceptor;
4-
53
import java.util.ArrayList;
64
import java.util.Collection;
75
import java.util.List;
@@ -24,6 +22,7 @@
2422
import com.taboola.rest.api.model.HttpLoggingLevel;
2523
import com.taboola.rest.api.model.NoOpCommunicationInterceptor;
2624
import com.taboola.rest.api.model.RequestHeader;
25+
import com.taboola.rest.api.model.RequestHeaders;
2726
import com.taboola.rest.api.model.StringResponseFactory;
2827

2928
/**
@@ -80,7 +79,7 @@ public static class RestAPIClientBuilder {
8079
private final StringResponseFactories stringResponseFactories = new StringResponseFactories();
8180
private HttpLoggingLevel loggingLevel;
8281
private CommunicationInterceptor communicationInterceptor;
83-
private List<Interceptor> interceptors = new ArrayList<>();
82+
private RequestHeaders requestHeaders;
8483

8584
public RestAPIClientBuilder setLoggingLevel(HttpLoggingLevel loggingLevel) {
8685
this.loggingLevel = loggingLevel;
@@ -167,8 +166,8 @@ public RestAPIClientBuilder addStringBodyResponseFactory(Class<?> clazz, StringR
167166
return this;
168167
}
169168

170-
public RestAPIClientBuilder addInterceptor(Interceptor interceptor) {
171-
interceptors.add(interceptor);
169+
public RestAPIClientBuilder setRequestHeaders(RequestHeaders requestHeaders) {
170+
this.requestHeaders = requestHeaders;
172171
return this;
173172
}
174173

@@ -177,7 +176,7 @@ public RestAPIClient build() {
177176
String finalUserAgent = String.format("%s/%s/%s (%s)", userAgentPrefix, restAPIVersion, VERSION, userAgentSuffix);
178177
Collection<RequestHeader> headers = getAllHeaders(this.headers, finalUserAgent);
179178
CommunicationConfig config = new CommunicationConfig(baseUrl, connectionTimeoutMillis, readTimeoutMillis, writeTimeoutMillis, maxIdleConnections,
180-
keepAliveDurationMillis, headers, debug, exceptionFactory, objectMapper, stringResponseFactories, loggingLevel, communicationInterceptor, interceptors);
179+
keepAliveDurationMillis, headers, debug, exceptionFactory, objectMapper, stringResponseFactories, loggingLevel, communicationInterceptor, requestHeaders);
181180
return new RestAPIClient(new CommunicationFactory(config));
182181
}
183182

@@ -249,7 +248,7 @@ private void organizeState() {
249248
loggingLevel = HttpLoggingLevel.BASIC;
250249
}
251250

252-
if(communicationInterceptor == null) {
251+
if (communicationInterceptor == null) {
253252
communicationInterceptor = DEFAULT_COMMUNICATION_INTERCEPTOR;
254253
}
255254
}

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

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

5858
private OkHttpClient createOkHttpClient(CommunicationConfig config) {
59-
OkHttpClient.Builder builder = new OkHttpClient.Builder()
60-
.addInterceptor(new HeadersInterceptor(config.getHeaders()))
59+
return new OkHttpClient.Builder()
60+
.addInterceptor(new HeadersInterceptor(config.getHeaders(), config.getRequestHeaders()))
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-
69-
config.getInterceptors().forEach(builder::addInterceptor);
70-
71-
return builder.build();
67+
config.getKeepAliveDurationMillis(), TimeUnit.MILLISECONDS))
68+
.build();
7269
}
7370

7471

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

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

33

4-
import okhttp3.Interceptor;
5-
64
import java.util.Collection;
75

86
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -11,6 +9,7 @@
119
import com.taboola.rest.api.model.CommunicationInterceptor;
1210
import com.taboola.rest.api.model.HttpLoggingLevel;
1311
import com.taboola.rest.api.model.RequestHeader;
12+
import com.taboola.rest.api.model.RequestHeaders;
1413

1514
/**
1615
* Created by vladi
@@ -33,13 +32,13 @@ public class CommunicationConfig {
3332
private final StringResponseFactories stringResponseFactories;
3433
private final HttpLoggingLevel loggingLevel;
3534
private final CommunicationInterceptor communicationInterceptor;
36-
private final Collection<Interceptor> interceptors;
35+
private final RequestHeaders requestHeaders;
3736

3837
public CommunicationConfig(String baseUrl, Long connectionTimeoutMillis, Long readTimeoutMillis,
3938
Long writeTimeoutMillis, Integer maxIdleConnections, Long keepAliveDurationMillis,
4039
Collection<RequestHeader> headers, boolean debug, ExceptionFactory exceptionFactory,
4140
ObjectMapper objectMapper, StringResponseFactories stringResponseFactories, HttpLoggingLevel loggingLevel,
42-
CommunicationInterceptor communicationInterceptor, Collection<Interceptor> interceptors) {
41+
CommunicationInterceptor communicationInterceptor, RequestHeaders requestHeaders) {
4342
this.baseUrl = baseUrl;
4443
this.connectionTimeoutMillis = connectionTimeoutMillis;
4544
this.readTimeoutMillis = readTimeoutMillis;
@@ -53,7 +52,7 @@ public CommunicationConfig(String baseUrl, Long connectionTimeoutMillis, Long re
5352
this.stringResponseFactories = stringResponseFactories;
5453
this.loggingLevel = loggingLevel;
5554
this.communicationInterceptor = communicationInterceptor;
56-
this.interceptors = interceptors;
55+
this.requestHeaders = requestHeaders;
5756
}
5857

5958
public String getBaseUrl() {
@@ -108,8 +107,8 @@ public CommunicationInterceptor getCommunicationInterceptor() {
108107
return communicationInterceptor;
109108
}
110109

111-
public Collection<Interceptor> getInterceptors() {
112-
return interceptors;
110+
public RequestHeaders getRequestHeaders() {
111+
return requestHeaders;
113112
}
114113

115114
@Override
@@ -128,7 +127,7 @@ public String toString() {
128127
", stringResponseFactories=" + stringResponseFactories +
129128
", loggingLevel=" + loggingLevel +
130129
", communicationInterceptor=" + communicationInterceptor +
131-
", interceptors=" + interceptors +
130+
", requestHeaders=" + requestHeaders +
132131
'}';
133132
}
134133
}

src/main/java/com/taboola/rest/api/internal/interceptors/HeadersInterceptor.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import java.io.IOException;
44
import java.util.Collection;
5+
import java.util.Map;
56

67
import com.taboola.rest.api.model.RequestHeader;
8+
import com.taboola.rest.api.model.RequestHeaders;
79

810
import okhttp3.Interceptor;
911
import okhttp3.Request;
@@ -14,21 +16,36 @@
1416
*/
1517
public class HeadersInterceptor implements Interceptor {
1618
private final Collection<RequestHeader> headers;
19+
private final RequestHeaders requestHeaders;
1720

18-
public HeadersInterceptor(Collection<RequestHeader> headers) {
21+
public HeadersInterceptor(Collection<RequestHeader> headers, RequestHeaders requestHeaders) {
1922
this.headers = headers;
23+
this.requestHeaders = requestHeaders;
2024
}
2125

2226
@Override
2327
public Response intercept(Chain chain) throws IOException {
2428
Request.Builder builder = chain.request().newBuilder();
29+
2530
headers.stream()
2631
.filter(this::validateHeader)
2732
.forEach(header -> builder.header(header.getName(), header.getValue()));
33+
34+
if (requestHeaders != null) {
35+
requestHeaders.get()
36+
.entrySet()
37+
.stream().filter(this::validateHeader)
38+
.forEach(entry -> builder.header(entry.getKey(), entry.getValue()));
39+
}
40+
2841
return chain.proceed(builder.build());
2942
}
3043

31-
private boolean validateHeader(RequestHeader header){
44+
private boolean validateHeader(RequestHeader header) {
3245
return header.getName() != null && header.getValue() != null;
3346
}
47+
48+
private boolean validateHeader(Map.Entry<String, String> entry) {
49+
return entry.getKey() != null && entry.getValue() != null;
50+
}
3451
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.taboola.rest.api.model;
2+
3+
import java.util.Map;
4+
import java.util.function.Supplier;
5+
6+
public interface RequestHeaders extends Supplier<Map<String, String>> {
7+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ public interface TestEndpoint {
3838
public void beforeTest() {
3939
CommunicationConfig communicationConfig = new CommunicationConfig("http://localhost",
4040
1L, 1L, 1L, 1, 60L,
41-
Collections.singleton(new UserAgentHeader("Dummy-Agent")),true, new DefaultExceptionFactory(),
42-
new ObjectMapper(), new StringResponseFactories(), HttpLoggingLevel.BASIC, new NoOpCommunicationInterceptor(), Collections.emptyList());
41+
Collections.singleton(new UserAgentHeader("Dummy-Agent")), true, new DefaultExceptionFactory(),
42+
new ObjectMapper(), new StringResponseFactories(), HttpLoggingLevel.BASIC, new NoOpCommunicationInterceptor(), null);
4343
testInstance = new CommunicationFactory(communicationConfig);
4444
}
4545

0 commit comments

Comments
 (0)