Skip to content

Commit 4c2adf7

Browse files
Add ability to add proxy to Http Client (#94)
1 parent a78e386 commit 4c2adf7

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

src/main/java/com/flagsmith/config/FlagsmithConfig.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.flagsmith.FlagsmithFlagDefaults;
55
import com.flagsmith.interfaces.DefaultFlagHandler;
66
import com.flagsmith.threads.AnalyticsProcessor;
7+
8+
import java.net.Proxy;
79
import java.util.ArrayList;
810
import java.util.List;
911
import java.util.concurrent.TimeUnit;
@@ -57,6 +59,9 @@ protected FlagsmithConfig(Builder builder) {
5759
for (final Interceptor interceptor : builder.interceptors) {
5860
httpBuilder = httpBuilder.addInterceptor(interceptor);
5961
}
62+
if (builder.proxy != null) {
63+
httpBuilder = httpBuilder.proxy(builder.proxy);
64+
}
6065
this.httpClient = httpBuilder.build();
6166

6267
this.retries = builder.retries;
@@ -79,6 +84,7 @@ public static FlagsmithConfig.Builder newBuilder() {
7984
public static class Builder {
8085

8186
private final List<Interceptor> interceptors = new ArrayList<>();
87+
private Proxy proxy;
8288
private HttpUrl baseUri = DEFAULT_BASE_URI;
8389
private int connectTimeoutMillis = DEFAULT_CONNECT_TIMEOUT_MILLIS;
8490
private int writeTimeoutMillis = DEFAULT_WRITE_TIMEOUT_MILLIS;
@@ -167,6 +173,17 @@ public Builder addHttpInterceptor(Interceptor interceptor) {
167173
return this;
168174
}
169175

176+
/**
177+
* Add a Proxy to the HttpClient.
178+
*
179+
* @param proxy the proxy
180+
* @return the Builder
181+
*/
182+
public Builder withProxy(Proxy proxy) {
183+
this.proxy = proxy;
184+
return this;
185+
}
186+
170187
/**
171188
* Add retries for HTTP request to the builder.
172189
* @param retries no of retries for requests

src/test/java/com/flagsmith/config/FlagsmithConfigTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package com.flagsmith.config;
22

3+
import static org.junit.Assert.assertNull;
34
import static org.testng.Assert.assertEquals;
45
import static org.testng.Assert.assertTrue;
56

67
import com.flagsmith.config.FlagsmithConfig;
8+
9+
import java.net.InetSocketAddress;
10+
import java.net.Proxy;
711
import okhttp3.mock.MockInterceptor;
812
import org.testng.annotations.Test;
913

@@ -17,21 +21,26 @@ public void configTest_defaults() {
1721
assertEquals(5000, flagsmithConfig.getHttpClient().readTimeoutMillis());
1822
assertEquals(5000, flagsmithConfig.getHttpClient().writeTimeoutMillis());
1923
assertEquals(2000, flagsmithConfig.getHttpClient().connectTimeoutMillis());
24+
assertNull(flagsmithConfig.getHttpClient().proxy());
2025
}
2126

2227
@Test(groups = "unit")
2328
public void configTest_custom() {
29+
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy", 1234));
30+
2431
final FlagsmithConfig flagsmithConfig = FlagsmithConfig.newBuilder()
2532
.addHttpInterceptor(new MockInterceptor())
2633
.connectTimeout(1234)
2734
.readTimeout(3333)
2835
.writeTimeout(6666)
36+
.withProxy(proxy)
2937
.build();
3038

3139
assertEquals(1, flagsmithConfig.getHttpClient().interceptors().size());
3240
assertEquals(3333, flagsmithConfig.getHttpClient().readTimeoutMillis());
3341
assertEquals(6666, flagsmithConfig.getHttpClient().writeTimeoutMillis());
3442
assertEquals(1234, flagsmithConfig.getHttpClient().connectTimeoutMillis());
43+
assertEquals(proxy, flagsmithConfig.getHttpClient().proxy());
3544
}
3645

3746
@Test(groups = "unit")

0 commit comments

Comments
 (0)