Skip to content

Commit bd6989a

Browse files
committed
- moves helper methods into a dedicated class for reusability
1 parent 4c6bf2d commit bd6989a

File tree

2 files changed

+55
-35
lines changed

2 files changed

+55
-35
lines changed

src/main/java/com/microsoft/graph/http/CoreHttpProvider.java

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.io.UnsupportedEncodingException;
3232
import java.net.URL;
3333
import java.util.ArrayList;
34+
import java.util.Arrays;
3435
import java.util.HashMap;
3536
import java.util.List;
3637
import java.util.Map;
@@ -58,6 +59,7 @@
5859
import okhttp3.Headers;
5960
import okhttp3.MediaType;
6061
import okhttp3.OkHttpClient;
62+
import okhttp3.Protocol;
6163
import okhttp3.Request;
6264
import okhttp3.RequestBody;
6365
import okhttp3.Response;
@@ -67,6 +69,7 @@
6769
* HTTP provider based off of OkHttp and msgraph-sdk-java-core library
6870
*/
6971
public class CoreHttpProvider implements IHttpProvider {
72+
private final HttpResponseHeadersHelper responseHeadersHelper = new HttpResponseHeadersHelper();
7073

7174
/**
7275
* The serializer
@@ -407,17 +410,17 @@ public Request authenticateRequest(Request request) {
407410
if (response.code() == HttpResponseCode.HTTP_NOBODY
408411
|| response.code() == HttpResponseCode.HTTP_NOT_MODIFIED) {
409412
logger.logDebug("Handling response with no body");
410-
return handleEmptyResponse(CoreHttpProvider.getResponseHeadersAsMapOfStringList(response), resultClass);
413+
return handleEmptyResponse(responseHeadersHelper.getResponseHeadersAsMapOfStringList(response), resultClass);
411414
}
412415

413416
if (response.code() == HttpResponseCode.HTTP_ACCEPTED) {
414417
logger.logDebug("Handling accepted response");
415-
return handleEmptyResponse(CoreHttpProvider.getResponseHeadersAsMapOfStringList(response), resultClass);
418+
return handleEmptyResponse(responseHeadersHelper.getResponseHeadersAsMapOfStringList(response), resultClass);
416419
}
417420

418421
in = new BufferedInputStream(response.body().byteStream());
419422

420-
final Map<String, String> headers = CoreHttpProvider.getResponseHeadersAsMapStringString(response);
423+
final Map<String, String> headers = responseHeadersHelper.getResponseHeadersAsMapStringString(response);
421424

422425
if(response.body() == null || response.body().contentLength() == 0)
423426
return (Result) null;
@@ -426,7 +429,7 @@ public Request authenticateRequest(Request request) {
426429
if (contentType != null && resultClass != InputStream.class &&
427430
contentType.contains(Constants.JSON_CONTENT_TYPE)) {
428431
logger.logDebug("Response json");
429-
return handleJsonResponse(in, CoreHttpProvider.getResponseHeadersAsMapOfStringList(response), resultClass);
432+
return handleJsonResponse(in, responseHeadersHelper.getResponseHeadersAsMapOfStringList(response), resultClass);
430433
} else if (resultClass == InputStream.class) {
431434
logger.logDebug("Response binary");
432435
isBinaryStreamInput = true;
@@ -456,37 +459,6 @@ public Request authenticateRequest(Request request) {
456459
}
457460
}
458461

459-
/**
460-
* Gets the response headers from OkHttp Response
461-
*
462-
* @param response the OkHttp response
463-
* @return the set of headers names and value
464-
*/
465-
static Map<String, String> getResponseHeadersAsMapStringString(final Response response) {
466-
final Map<String, String> headers = new HashMap<>();
467-
int index = 0;
468-
Headers responseHeaders = response.headers();
469-
while (index < responseHeaders.size()) {
470-
final String headerName = responseHeaders.name(index);
471-
final String headerValue = responseHeaders.value(index);
472-
if (headerName == null && headerValue == null) {
473-
break;
474-
}
475-
headers.put(headerName, headerValue);
476-
index++;
477-
}
478-
return headers;
479-
}
480-
481-
static Map<String, List<String>> getResponseHeadersAsMapOfStringList(Response response) {
482-
Map<String, List<String>> headerFields = response.headers().toMultimap();
483-
// Add the response code
484-
List<String> list = new ArrayList<>();
485-
list.add(String.format("%d", response.code()));
486-
headerFields.put("responseCode", list);
487-
return headerFields;
488-
}
489-
490462
private Request convertIHttpRequestToOkHttpRequest(IHttpRequest request) {
491463
if(request != null) {
492464
Request.Builder requestBuilder = new Request.Builder();
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.microsoft.graph.http;
2+
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
import java.util.Map;
7+
8+
import okhttp3.Headers;
9+
import okhttp3.Response;
10+
11+
public class HttpResponseHeadersHelper {
12+
/**
13+
* Gets the response headers from OkHttp Response
14+
*
15+
* @param response the OkHttp response
16+
* @return the set of headers names and value
17+
*/
18+
public Map<String, String> getResponseHeadersAsMapStringString(final Response response) {
19+
final Map<String, String> headers = new HashMap<>();
20+
int index = 0;
21+
Headers responseHeaders = response.headers();
22+
while (index < responseHeaders.size()) {
23+
final String headerName = responseHeaders.name(index);
24+
final String headerValue = responseHeaders.value(index);
25+
if (headerName == null && headerValue == null) {
26+
break;
27+
}
28+
headers.put(headerName, headerValue);
29+
index++;
30+
}
31+
return headers;
32+
}
33+
34+
/**
35+
* Gets the response headers from OkHttp Response
36+
*
37+
* @param response the OkHttp response
38+
* @return the set of headers names and value
39+
*/
40+
public Map<String, List<String>> getResponseHeadersAsMapOfStringList(Response response) {
41+
Map<String, List<String>> headerFields = response.headers().toMultimap();
42+
// Add the response code
43+
List<String> list = new ArrayList<>();
44+
list.add(String.format("%d", response.code()));
45+
headerFields.put("responseCode", list);
46+
return headerFields;
47+
}
48+
}

0 commit comments

Comments
 (0)