From bf1279743e42f18f42eddeebacccd428e7ac46f5 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 15 Feb 2022 09:50:58 +0100 Subject: [PATCH] Use custom HTTP client for OneDrive to increase timeouts --- .../cloud/onedrive/OnedriveClientFactory.kt | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveClientFactory.kt b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveClientFactory.kt index 294f278a..5dc4f4c3 100644 --- a/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveClientFactory.kt +++ b/data/src/main/java/org/cryptomator/data/cloud/onedrive/OnedriveClientFactory.kt @@ -2,13 +2,15 @@ package org.cryptomator.data.cloud.onedrive import android.content.Context import com.microsoft.graph.authentication.BaseAuthenticationProvider -import com.microsoft.graph.logger.ILogger -import com.microsoft.graph.logger.LoggerLevel +import com.microsoft.graph.httpcore.HttpClients import com.microsoft.graph.requests.GraphServiceClient +import org.cryptomator.data.cloud.okhttplogging.HttpLoggingInterceptor +import org.cryptomator.data.util.NetworkTimeout import org.cryptomator.util.SharedPreferencesHandler import org.cryptomator.util.crypto.CredentialCryptor import java.net.URL import java.util.concurrent.CompletableFuture +import okhttp3.Interceptor import okhttp3.Request import timber.log.Timber @@ -29,31 +31,28 @@ class OnedriveClientFactory private constructor() { } } - val logger = object : ILogger { - override fun getLoggingLevel(): LoggerLevel { - return if(sharedPreferencesHandler.debugMode()) { - LoggerLevel.DEBUG - } else { - LoggerLevel.ERROR - } - } - - override fun logDebug(message: String) { - Timber.tag("OnedriveClientFactory").d(message) - } - - override fun logError(message: String, throwable: Throwable?) { - Timber.tag("OnedriveClientFactory").e(throwable, message) - } - - override fun setLoggingLevel(level: LoggerLevel) {} - } + val httpClient = HttpClients.createDefault(tokenAuthenticationProvider) + .newBuilder() + .connectTimeout(NetworkTimeout.CONNECTION.timeout, NetworkTimeout.CONNECTION.unit) // + .readTimeout(NetworkTimeout.READ.timeout, NetworkTimeout.READ.unit) // + .writeTimeout(NetworkTimeout.WRITE.timeout, NetworkTimeout.WRITE.unit) // + .addInterceptor(httpLoggingInterceptor(context)) // + .build(); return GraphServiceClient // .builder() // + .httpClient(httpClient) // .authenticationProvider(tokenAuthenticationProvider) // - .logger(logger) .buildClient() } + + private fun httpLoggingInterceptor(context: Context): Interceptor { + val logger = object : HttpLoggingInterceptor.Logger { + override fun log(message: String) { + Timber.tag("OkHttp").d(message) + } + } + return HttpLoggingInterceptor(logger, context) + } } }