3131import java .io .UnsupportedEncodingException ;
3232import java .net .URL ;
3333import java .util .ArrayList ;
34+ import java .util .Arrays ;
3435import java .util .HashMap ;
3536import java .util .List ;
3637import java .util .Map ;
5859import okhttp3 .Headers ;
5960import okhttp3 .MediaType ;
6061import okhttp3 .OkHttpClient ;
62+ import okhttp3 .Protocol ;
6163import okhttp3 .Request ;
6264import okhttp3 .RequestBody ;
6365import okhttp3 .Response ;
6769 * HTTP provider based off of OkHttp and msgraph-sdk-java-core library
6870 */
6971public 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 ();
0 commit comments