Use custom HTTP client for OneDrive to increase timeouts

This commit is contained in:
Julian Raufelder 2022-02-15 09:50:58 +01:00
parent 7699943dce
commit bf1279743e
No known key found for this signature in database
GPG Key ID: 17EE71F6634E381D

View File

@ -2,13 +2,15 @@ package org.cryptomator.data.cloud.onedrive
import android.content.Context import android.content.Context
import com.microsoft.graph.authentication.BaseAuthenticationProvider import com.microsoft.graph.authentication.BaseAuthenticationProvider
import com.microsoft.graph.logger.ILogger import com.microsoft.graph.httpcore.HttpClients
import com.microsoft.graph.logger.LoggerLevel
import com.microsoft.graph.requests.GraphServiceClient 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.SharedPreferencesHandler
import org.cryptomator.util.crypto.CredentialCryptor import org.cryptomator.util.crypto.CredentialCryptor
import java.net.URL import java.net.URL
import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletableFuture
import okhttp3.Interceptor
import okhttp3.Request import okhttp3.Request
import timber.log.Timber import timber.log.Timber
@ -29,31 +31,28 @@ class OnedriveClientFactory private constructor() {
} }
} }
val logger = object : ILogger { val httpClient = HttpClients.createDefault(tokenAuthenticationProvider)
override fun getLoggingLevel(): LoggerLevel { .newBuilder()
return if(sharedPreferencesHandler.debugMode()) { .connectTimeout(NetworkTimeout.CONNECTION.timeout, NetworkTimeout.CONNECTION.unit) //
LoggerLevel.DEBUG .readTimeout(NetworkTimeout.READ.timeout, NetworkTimeout.READ.unit) //
} else { .writeTimeout(NetworkTimeout.WRITE.timeout, NetworkTimeout.WRITE.unit) //
LoggerLevel.ERROR .addInterceptor(httpLoggingInterceptor(context)) //
} .build();
}
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) {}
}
return GraphServiceClient // return GraphServiceClient //
.builder() // .builder() //
.httpClient(httpClient) //
.authenticationProvider(tokenAuthenticationProvider) // .authenticationProvider(tokenAuthenticationProvider) //
.logger(logger)
.buildClient() .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)
}
} }
} }