diff --git a/src/main/java/com/microsoft/graph/httpcore/HttpClients.java b/src/main/java/com/microsoft/graph/httpcore/HttpClients.java index 144173609..a85acc7de 100644 --- a/src/main/java/com/microsoft/graph/httpcore/HttpClients.java +++ b/src/main/java/com/microsoft/graph/httpcore/HttpClients.java @@ -16,7 +16,7 @@ private HttpClients() { * @return OkHttpClient.Builder() custom builder for developer to add its own interceptors to it */ public static Builder custom() { - return new OkHttpClient.Builder(); + return new OkHttpClient.Builder().addInterceptor(new TelemetryHandler()); } /** @@ -43,9 +43,11 @@ public static OkHttpClient createDefault(ICoreAuthenticationProvider auth) { */ public static OkHttpClient createFromInterceptors(Interceptor[] interceptors) { OkHttpClient.Builder builder = new OkHttpClient.Builder(); - for(Interceptor interceptor : interceptors) { - builder.addInterceptor(interceptor); - } + if(interceptors != null) + for(Interceptor interceptor : interceptors) { + if(interceptor != null) + builder.addInterceptor(interceptor); + } builder.addInterceptor(new TelemetryHandler()); return builder.build(); } diff --git a/src/main/java/com/microsoft/graph/httpcore/TelemetryHandler.java b/src/main/java/com/microsoft/graph/httpcore/TelemetryHandler.java index 9bcd75d3f..c6031fedd 100644 --- a/src/main/java/com/microsoft/graph/httpcore/TelemetryHandler.java +++ b/src/main/java/com/microsoft/graph/httpcore/TelemetryHandler.java @@ -21,15 +21,15 @@ public Response intercept(Chain chain) throws IOException { Request.Builder telemetryAddedBuilder = request.newBuilder(); TelemetryOptions telemetryOptions = request.tag(TelemetryOptions.class); + if(telemetryOptions == null) + telemetryOptions = new TelemetryOptions(); - if(telemetryOptions != null) { - String featureUsage = "(featureUsage=" + telemetryOptions.getFeatureUsage() + ")"; - String sdkversion_value = GRAPH_VERSION_PREFIX + "/" + VERSION + " " + featureUsage; - telemetryAddedBuilder.addHeader(SDK_VERSION, sdkversion_value); + String featureUsage = "(featureUsage=" + telemetryOptions.getFeatureUsage() + ")"; + String sdkversion_value = GRAPH_VERSION_PREFIX + "/" + VERSION + " " + featureUsage; + telemetryAddedBuilder.addHeader(SDK_VERSION, sdkversion_value); - if(request.header(CLIENT_REQUEST_ID) == null) { - telemetryAddedBuilder.addHeader(CLIENT_REQUEST_ID, telemetryOptions.getClientRequestId()); - } + if(request.header(CLIENT_REQUEST_ID) == null) { + telemetryAddedBuilder.addHeader(CLIENT_REQUEST_ID, telemetryOptions.getClientRequestId()); } return chain.proceed(telemetryAddedBuilder.build()); diff --git a/src/test/java/com/microsoft/graph/httpcore/TelemetryHandlerTest.java b/src/test/java/com/microsoft/graph/httpcore/TelemetryHandlerTest.java index 8f49b8126..deab260a4 100644 --- a/src/test/java/com/microsoft/graph/httpcore/TelemetryHandlerTest.java +++ b/src/test/java/com/microsoft/graph/httpcore/TelemetryHandlerTest.java @@ -56,4 +56,17 @@ public Request authenticateRequest(Request request) { assertNotNull(response); assertTrue(response.request().header("SdkVersion").contains(expectedHeader)); } + + @Test + public void arrayInterceptorEmptyTest() throws IOException { + Interceptor[] interceptors = null; + OkHttpClient client = HttpClients.createFromInterceptors(interceptors); + String expectedHeader = TelemetryHandler.SDK_VERSION + TelemetryHandler.GRAPH_VERSION_PREFIX +"/" + +TelemetryHandler.VERSION; + Request request = new Request.Builder().url("https://graph.microsoft.com/v1.0/users/").build(); + Response response = client.newCall(request).execute(); + assertNotNull(response); + assertTrue(response.request().header("SdkVersion").contains(expectedHeader)); + } + }