From 4e5bfa0290ec97dabb669538b29a88dfe805b0f4 Mon Sep 17 00:00:00 2001 From: Brie Date: Wed, 22 May 2019 12:51:46 -0700 Subject: [PATCH] Add example of reqrite URL interceptor --- .../src/main/java/sample/Main.java | 1 + .../java/sample/RewriteUrlInterceptor.java | 14 ++++++ analytics/pom.xml | 5 ++ .../com/segment/analytics/AnalyticsTest.java | 50 +++++++++++++++++++ pom.xml | 5 ++ 5 files changed, 75 insertions(+) create mode 100644 analytics-sample/src/main/java/sample/RewriteUrlInterceptor.java diff --git a/analytics-sample/src/main/java/sample/Main.java b/analytics-sample/src/main/java/sample/Main.java index cfad1468..70800d6b 100644 --- a/analytics-sample/src/main/java/sample/Main.java +++ b/analytics-sample/src/main/java/sample/Main.java @@ -56,6 +56,7 @@ private static Client createClient() { .readTimeout(15, TimeUnit.SECONDS) .writeTimeout(15, TimeUnit.SECONDS) .addInterceptor(new GzipRequestInterceptor()) + .addInterceptor(new RewriteUrlInterceptor()) .build()); } } diff --git a/analytics-sample/src/main/java/sample/RewriteUrlInterceptor.java b/analytics-sample/src/main/java/sample/RewriteUrlInterceptor.java new file mode 100644 index 00000000..24d46500 --- /dev/null +++ b/analytics-sample/src/main/java/sample/RewriteUrlInterceptor.java @@ -0,0 +1,14 @@ +package sample; + +import java.io.IOException; +import okhttp3.*; + +/** This interceptor overrides the HTTP client URL */ +final class RewriteUrlInterceptor implements Interceptor { + @Override + public Response intercept(Interceptor.Chain chain) throws IOException { + Request originalRequest = chain.request(); + Request modifiedUrlRequest = originalRequest.newBuilder().url("proxy-url").build(); + return chain.proceed(modifiedUrlRequest); + } +} diff --git a/analytics/pom.xml b/analytics/pom.xml index 7a67a3aa..f5f120e0 100644 --- a/analytics/pom.xml +++ b/analytics/pom.xml @@ -47,6 +47,11 @@ burst test + + com.squareup.okhttp3 + mockwebserver + test + org.assertj assertj-core diff --git a/analytics/src/test/java/com/segment/analytics/AnalyticsTest.java b/analytics/src/test/java/com/segment/analytics/AnalyticsTest.java index e0dbfdbf..8ac276e7 100644 --- a/analytics/src/test/java/com/segment/analytics/AnalyticsTest.java +++ b/analytics/src/test/java/com/segment/analytics/AnalyticsTest.java @@ -1,18 +1,31 @@ package com.segment.analytics; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.initMocks; +import com.jakewharton.retrofit.Ok3Client; import com.segment.analytics.TestUtils.MessageBuilderTest; import com.segment.analytics.internal.AnalyticsClient; import com.segment.analytics.messages.Message; import com.segment.analytics.messages.MessageBuilder; +import com.segment.analytics.messages.TrackMessage; import com.squareup.burst.BurstJUnit4; +import java.io.IOException; import java.util.Collections; +import java.util.concurrent.TimeUnit; +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -88,4 +101,41 @@ public void flushIsDispatched() { verify(client).flush(); } + + @Rule public MockWebServer server = new MockWebServer(); + + @Test + public void testClient() throws InterruptedException { + server.enqueue(new MockResponse().setBody("hello, world!")); + + Analytics analytics = + new Analytics.Builder("writeKey") + .client( + new Ok3Client( + new OkHttpClient.Builder() + .connectTimeout(15, TimeUnit.SECONDS) + .readTimeout(15, TimeUnit.SECONDS) + .writeTimeout(15, TimeUnit.SECONDS) + .addInterceptor( + new Interceptor() { + @Override + public Response intercept(Chain chain) throws IOException { + Request newRequest = + chain + .request() + .newBuilder() + .url(server.url("/v2/import")) + .build(); + return chain.proceed(newRequest); + } + }) + .build())) + .build(); + + analytics.enqueue(TrackMessage.builder("test").userId("prateek")); + analytics.flush(); + + RecordedRequest request1 = server.takeRequest(); + assertThat(request1.getPath()).isEqualTo("/v2/import"); + } } diff --git a/pom.xml b/pom.xml index 74d54b11..1846274f 100644 --- a/pom.xml +++ b/pom.xml @@ -100,6 +100,11 @@ okhttp ${okhttp.version} + + com.squareup.okhttp3 + mockwebserver + ${okhttp.version} + com.jakewharton.retrofit retrofit1-okhttp3-client