diff --git a/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/navigation/NavigationRoute.java b/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/navigation/NavigationRoute.java index b5fd4bce3c2..c04ac7f98c7 100644 --- a/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/navigation/NavigationRoute.java +++ b/libandroid-navigation/src/main/java/com/mapbox/services/android/navigation/v5/navigation/NavigationRoute.java @@ -22,6 +22,8 @@ import java.util.Locale; +import okhttp3.EventListener; +import okhttp3.Interceptor; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -151,7 +153,11 @@ public static final class Builder { * Private constructor for initializing the raw MapboxDirections.Builder */ private Builder() { - directionsBuilder = MapboxDirections.builder(); + this(MapboxDirections.builder()); + } + + Builder(MapboxDirections.Builder directionsBuilder) { + this.directionsBuilder = directionsBuilder; } /** @@ -548,6 +554,28 @@ public Builder addWaypointTargets(@Nullable Point... waypointTargets) { return this; } + /** + * Adds an optional interceptor to set in the OkHttp client. + * + * @param interceptor to set for OkHttp + * @return this builder for chaining options together + */ + public Builder interceptor(Interceptor interceptor) { + directionsBuilder.interceptor(interceptor); + return this; + } + + /** + * Adds an optional event listener to set in the OkHttp client. + * + * @param eventListener to set for OkHttp + * @return this builder for chaining options together + */ + public Builder eventListener(EventListener eventListener) { + directionsBuilder.eventListener(eventListener); + return this; + } + /** * Optionally create a {@link Builder} based on all variables * from given {@link RouteOptions}. diff --git a/libandroid-navigation/src/test/java/com/mapbox/services/android/navigation/v5/navigation/NavigationRouteTest.java b/libandroid-navigation/src/test/java/com/mapbox/services/android/navigation/v5/navigation/NavigationRouteTest.java index e26fc37b741..9d2e4cd22f7 100644 --- a/libandroid-navigation/src/test/java/com/mapbox/services/android/navigation/v5/navigation/NavigationRouteTest.java +++ b/libandroid-navigation/src/test/java/com/mapbox/services/android/navigation/v5/navigation/NavigationRouteTest.java @@ -24,6 +24,8 @@ import java.util.Locale; import edu.emory.mathcs.backport.java.util.Collections; +import okhttp3.EventListener; +import okhttp3.Interceptor; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -226,6 +228,28 @@ public void cancelCall_doesNotCancelExecutedCall() { verify(routeCall, times(0)).cancel(); } + @Test + public void builderInterceptor_setsMapboxDirections() { + MapboxDirections.Builder mapboxDirectionsBuilder = mock(MapboxDirections.Builder.class); + NavigationRoute.Builder builder = new NavigationRoute.Builder(mapboxDirectionsBuilder); + EventListener eventListener = mock(EventListener.class); + + builder.eventListener(eventListener); + + verify(mapboxDirectionsBuilder).eventListener(eventListener); + } + + @Test + public void builderEventListener_setsMapboxDirections() { + MapboxDirections.Builder mapboxDirectionsBuilder = mock(MapboxDirections.Builder.class); + NavigationRoute.Builder builder = new NavigationRoute.Builder(mapboxDirectionsBuilder); + Interceptor interceptor = mock(Interceptor.class); + + builder.interceptor(interceptor); + + verify(mapboxDirectionsBuilder).interceptor(interceptor); + } + @Test public void getRoute_routeRetrievalEventSent() { MapboxDirections mapboxDirections = mock(MapboxDirections.class);