From 519765b9bdb23985c9f7376025e0e1e089cd9d4d Mon Sep 17 00:00:00 2001 From: dkadrikj Date: Mon, 22 Nov 2021 11:10:22 +0100 Subject: [PATCH] Rename ServerConnectionListener.kt to ApiConnectionListener.kt, ServerConnectionHandler.kt to ApiConnectionHandler.kt and ServerConnectionException.kt to ApiConnectionException.kt --- .../proton/android/core/coreexample/di/NetworkModule.kt | 8 ++++---- .../me/proton/core/network/data/ApiManagerFactory.kt | 8 ++++---- .../kotlin/me/proton/core/network/data/ApiResultUtils.kt | 6 +++--- .../network/data/interceptor/ServerErrorInterceptor.kt | 4 ++-- .../java/me/proton/core/network/data/ApiManagerTests.kt | 1 + .../me/proton/core/network/data/HumanVerificationTests.kt | 3 ++- .../me/proton/core/network/data/ProtonApiBackendTests.kt | 3 ++- .../kotlin/me/proton/core/network/domain/ApiResult.kt | 6 +++--- ...erConnectionException.kt => ApiConnectionException.kt} | 2 +- ...ServerConnectionHandler.kt => ApiConnectionHandler.kt} | 8 ++++---- ...rverConnectionListener.kt => ApiConnectionListener.kt} | 2 +- 11 files changed, 27 insertions(+), 24 deletions(-) rename network/domain/src/main/kotlin/me/proton/core/network/domain/exception/{ServerConnectionException.kt => ApiConnectionException.kt} (96%) rename network/domain/src/main/kotlin/me/proton/core/network/domain/handlers/{ServerConnectionHandler.kt => ApiConnectionHandler.kt} (87%) rename network/domain/src/main/kotlin/me/proton/core/network/domain/serverconnection/{ServerConnectionListener.kt => ApiConnectionListener.kt} (96%) diff --git a/coreexample/src/main/kotlin/me/proton/android/core/coreexample/di/NetworkModule.kt b/coreexample/src/main/kotlin/me/proton/android/core/coreexample/di/NetworkModule.kt index 1c9c604da..f0759ffd9 100644 --- a/coreexample/src/main/kotlin/me/proton/android/core/coreexample/di/NetworkModule.kt +++ b/coreexample/src/main/kotlin/me/proton/android/core/coreexample/di/NetworkModule.kt @@ -46,7 +46,7 @@ import me.proton.core.network.domain.NetworkManager import me.proton.core.network.domain.NetworkPrefs import me.proton.core.network.domain.client.ClientIdProvider import me.proton.core.network.domain.client.ExtraHeaderProvider -import me.proton.core.network.domain.serverconnection.ServerConnectionListener +import me.proton.core.network.domain.serverconnection.ApiConnectionListener import me.proton.core.network.domain.humanverification.HumanVerificationListener import me.proton.core.network.domain.humanverification.HumanVerificationProvider import me.proton.core.network.domain.server.ServerTimeListener @@ -109,7 +109,7 @@ class NetworkModule { humanVerificationProvider: HumanVerificationProvider, humanVerificationListener: HumanVerificationListener, extraHeaderProvider: ExtraHeaderProvider, - serverConnectionListener: ServerConnectionListener + apiConnectionListener: ApiConnectionListener ): ApiManagerFactory = ApiManagerFactory( Constants.BASE_URL, apiClient, @@ -131,7 +131,7 @@ class NetworkModule { ) }, extraHeaderProvider, - serverConnectionListener + apiConnectionListener ) @Provides @@ -141,7 +141,7 @@ class NetworkModule { @Provides @Singleton - fun provideGuestHoleFallbackListener(): ServerConnectionListener = object: ServerConnectionListener { + fun provideGuestHoleFallbackListener(): ApiConnectionListener = object: ApiConnectionListener { override suspend fun onPotentiallyBlocked( path: String?, query: String?, diff --git a/network/data/src/main/kotlin/me/proton/core/network/data/ApiManagerFactory.kt b/network/data/src/main/kotlin/me/proton/core/network/data/ApiManagerFactory.kt index a96e311d9..ca2fae89f 100644 --- a/network/data/src/main/kotlin/me/proton/core/network/data/ApiManagerFactory.kt +++ b/network/data/src/main/kotlin/me/proton/core/network/data/ApiManagerFactory.kt @@ -37,8 +37,8 @@ import me.proton.core.network.domain.NetworkManager import me.proton.core.network.domain.NetworkPrefs import me.proton.core.network.domain.client.ClientIdProvider import me.proton.core.network.domain.client.ExtraHeaderProvider -import me.proton.core.network.domain.serverconnection.ServerConnectionListener -import me.proton.core.network.domain.handlers.ServerConnectionHandler +import me.proton.core.network.domain.serverconnection.ApiConnectionListener +import me.proton.core.network.domain.handlers.ApiConnectionHandler import me.proton.core.network.domain.handlers.HumanVerificationInvalidHandler import me.proton.core.network.domain.handlers.HumanVerificationNeededHandler import me.proton.core.network.domain.handlers.ProtonForceUpdateHandler @@ -85,7 +85,7 @@ class ApiManagerFactory( private val alternativeApiPins: List = Constants.ALTERNATIVE_API_SPKI_PINS, private val cache: () -> Cache? = { null }, private val extraHeaderProvider: ExtraHeaderProvider? = null, - private val serverConnectionListener: ServerConnectionListener? + private val apiConnectionListener: ApiConnectionListener? ) { @OptIn(ObsoleteCoroutinesApi::class) @@ -137,7 +137,7 @@ class ApiManagerFactory( ): List> { val refreshTokenHandler = RefreshTokenHandler(sessionId, sessionProvider, sessionListener, monoClockMs) val forceUpdateHandler = ProtonForceUpdateHandler(apiClient) - val serverConnectionHandler = ServerConnectionHandler(serverConnectionListener) + val serverConnectionHandler = ApiConnectionHandler(apiConnectionListener) val humanVerificationNeededHandler = HumanVerificationNeededHandler(sessionId, clientIdProvider, humanVerificationListener, monoClockMs) val humanVerificationInvalidHandler = diff --git a/network/data/src/main/kotlin/me/proton/core/network/data/ApiResultUtils.kt b/network/data/src/main/kotlin/me/proton/core/network/data/ApiResultUtils.kt index 6e661b01b..94c6c6105 100644 --- a/network/data/src/main/kotlin/me/proton/core/network/data/ApiResultUtils.kt +++ b/network/data/src/main/kotlin/me/proton/core/network/data/ApiResultUtils.kt @@ -20,7 +20,7 @@ package me.proton.core.network.data import kotlinx.serialization.SerializationException import me.proton.core.network.domain.ApiResult import me.proton.core.network.domain.NetworkManager -import me.proton.core.network.domain.exception.ServerConnectionException +import me.proton.core.network.domain.exception.ApiConnectionException import me.proton.core.util.kotlin.CoreLogger import okhttp3.Response import retrofit2.HttpException @@ -46,7 +46,7 @@ internal suspend fun safeApiCall( ApiResult.Error.Parse(e) } catch (e: CertificateException) { ApiResult.Error.Certificate(e) - } catch (e: ServerConnectionException) { + } catch (e: ApiConnectionException) { e.toApiResult(networkManager) } if (result is ApiResult.Error) { @@ -55,7 +55,7 @@ internal suspend fun safeApiCall( return result } -private fun ServerConnectionException.toApiResult(networkManager: NetworkManager): ApiResult.Error.Connection { +private fun ApiConnectionException.toApiResult(networkManager: NetworkManager): ApiResult.Error.Connection { // handle the exceptions that might indicate that the API is potentially blocked return when (originalException) { is SSLHandshakeException -> ApiResult.Error.Certificate(this) diff --git a/network/data/src/main/kotlin/me/proton/core/network/data/interceptor/ServerErrorInterceptor.kt b/network/data/src/main/kotlin/me/proton/core/network/data/interceptor/ServerErrorInterceptor.kt index 8f45e55ed..3e11d07e5 100644 --- a/network/data/src/main/kotlin/me/proton/core/network/data/interceptor/ServerErrorInterceptor.kt +++ b/network/data/src/main/kotlin/me/proton/core/network/data/interceptor/ServerErrorInterceptor.kt @@ -20,7 +20,7 @@ package me.proton.core.network.data.interceptor import me.proton.core.network.data.ProtonErrorException import me.proton.core.network.data.protonApi.ProtonErrorData -import me.proton.core.network.domain.exception.ServerConnectionException +import me.proton.core.network.domain.exception.ApiConnectionException import me.proton.core.util.kotlin.deserializeOrNull import okhttp3.Interceptor import okhttp3.Response @@ -35,7 +35,7 @@ class ServerErrorInterceptor : Interceptor { } catch (e: IOException) { // every IO exception is possible potential blocking of the API with(request.url) { - throw ServerConnectionException(encodedPath, query, e) + throw ApiConnectionException(encodedPath, query, e) } } if (!response.isSuccessful) { diff --git a/network/data/src/test/java/me/proton/core/network/data/ApiManagerTests.kt b/network/data/src/test/java/me/proton/core/network/data/ApiManagerTests.kt index 66395012c..dfcc643c2 100644 --- a/network/data/src/test/java/me/proton/core/network/data/ApiManagerTests.kt +++ b/network/data/src/test/java/me/proton/core/network/data/ApiManagerTests.kt @@ -142,6 +142,7 @@ internal class ApiManagerTests { mockk(), scope, cache = { null }, + apiConnectionListener = null ) coEvery { dohService.getAlternativeBaseUrls(any()) } returns listOf(proxy1url) diff --git a/network/data/src/test/java/me/proton/core/network/data/HumanVerificationTests.kt b/network/data/src/test/java/me/proton/core/network/data/HumanVerificationTests.kt index 5f85f5e98..c1eb6384f 100644 --- a/network/data/src/test/java/me/proton/core/network/data/HumanVerificationTests.kt +++ b/network/data/src/test/java/me/proton/core/network/data/HumanVerificationTests.kt @@ -166,7 +166,8 @@ internal class HumanVerificationTests { humanVerificationListener, cookieStore, scope, - cache = { null } + cache = { null }, + apiConnectionListener = null ) every { networkManager.isConnectedToNetwork() } returns isNetworkAvailable diff --git a/network/data/src/test/java/me/proton/core/network/data/ProtonApiBackendTests.kt b/network/data/src/test/java/me/proton/core/network/data/ProtonApiBackendTests.kt index 31b1ef43d..46ae40bad 100644 --- a/network/data/src/test/java/me/proton/core/network/data/ProtonApiBackendTests.kt +++ b/network/data/src/test/java/me/proton/core/network/data/ProtonApiBackendTests.kt @@ -133,7 +133,8 @@ internal class ProtonApiBackendTests { humanVerificationListener, cookieStore, scope, - cache = { null } + cache = { null }, + apiConnectionListener = null ) every { networkManager.isConnectedToNetwork() } returns isNetworkAvailable diff --git a/network/domain/src/main/kotlin/me/proton/core/network/domain/ApiResult.kt b/network/domain/src/main/kotlin/me/proton/core/network/domain/ApiResult.kt index 42d57b554..ee17d3dfe 100644 --- a/network/domain/src/main/kotlin/me/proton/core/network/domain/ApiResult.kt +++ b/network/domain/src/main/kotlin/me/proton/core/network/domain/ApiResult.kt @@ -20,7 +20,7 @@ package me.proton.core.network.domain import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.withTimeoutOrNull -import me.proton.core.network.domain.exception.ServerConnectionException +import me.proton.core.network.domain.exception.ApiConnectionException import me.proton.core.network.domain.humanverification.HumanVerificationAvailableMethods /** @@ -100,8 +100,8 @@ sealed class ApiResult { ) : Error(cause) { override val isPotentialBlocking get() = potentialBlock - val path = if (cause is ServerConnectionException) cause.path else null - val query = if (cause is ServerConnectionException) cause.query else null + val path = if (cause is ApiConnectionException) cause.path else null + val query = if (cause is ApiConnectionException) cause.query else null } /** diff --git a/network/domain/src/main/kotlin/me/proton/core/network/domain/exception/ServerConnectionException.kt b/network/domain/src/main/kotlin/me/proton/core/network/domain/exception/ApiConnectionException.kt similarity index 96% rename from network/domain/src/main/kotlin/me/proton/core/network/domain/exception/ServerConnectionException.kt rename to network/domain/src/main/kotlin/me/proton/core/network/domain/exception/ApiConnectionException.kt index 72d54762c..ca7af8bfb 100644 --- a/network/domain/src/main/kotlin/me/proton/core/network/domain/exception/ServerConnectionException.kt +++ b/network/domain/src/main/kotlin/me/proton/core/network/domain/exception/ApiConnectionException.kt @@ -20,7 +20,7 @@ package me.proton.core.network.domain.exception import java.io.IOException -class ServerConnectionException( +class ApiConnectionException( val path: String, val query: String?, val originalException: IOException diff --git a/network/domain/src/main/kotlin/me/proton/core/network/domain/handlers/ServerConnectionHandler.kt b/network/domain/src/main/kotlin/me/proton/core/network/domain/handlers/ApiConnectionHandler.kt similarity index 87% rename from network/domain/src/main/kotlin/me/proton/core/network/domain/handlers/ServerConnectionHandler.kt rename to network/domain/src/main/kotlin/me/proton/core/network/domain/handlers/ApiConnectionHandler.kt index 9d9127a2a..b8580dd4d 100644 --- a/network/domain/src/main/kotlin/me/proton/core/network/domain/handlers/ServerConnectionHandler.kt +++ b/network/domain/src/main/kotlin/me/proton/core/network/domain/handlers/ApiConnectionHandler.kt @@ -24,10 +24,10 @@ import me.proton.core.network.domain.ApiBackend import me.proton.core.network.domain.ApiErrorHandler import me.proton.core.network.domain.ApiManager import me.proton.core.network.domain.ApiResult -import me.proton.core.network.domain.serverconnection.ServerConnectionListener +import me.proton.core.network.domain.serverconnection.ApiConnectionListener -class ServerConnectionHandler( - private val serverConnectionListener: ServerConnectionListener? +class ApiConnectionHandler( + private val apiConnectionListener: ApiConnectionListener? ) : ApiErrorHandler { override suspend fun invoke( backend: ApiBackend, @@ -37,7 +37,7 @@ class ServerConnectionHandler( if (!error.isPotentialBlocking) return error if (error !is ApiResult.Error.Connection) return error - return serverConnectionListener?.let { listener -> + return apiConnectionListener?.let { listener -> globalMutex.withLock { listener.onPotentiallyBlocked(error.path, error.query) { backend(call) } } diff --git a/network/domain/src/main/kotlin/me/proton/core/network/domain/serverconnection/ServerConnectionListener.kt b/network/domain/src/main/kotlin/me/proton/core/network/domain/serverconnection/ApiConnectionListener.kt similarity index 96% rename from network/domain/src/main/kotlin/me/proton/core/network/domain/serverconnection/ServerConnectionListener.kt rename to network/domain/src/main/kotlin/me/proton/core/network/domain/serverconnection/ApiConnectionListener.kt index 22465edd3..db016a10f 100644 --- a/network/domain/src/main/kotlin/me/proton/core/network/domain/serverconnection/ServerConnectionListener.kt +++ b/network/domain/src/main/kotlin/me/proton/core/network/domain/serverconnection/ApiConnectionListener.kt @@ -20,7 +20,7 @@ package me.proton.core.network.domain.serverconnection import me.proton.core.network.domain.ApiResult -interface ServerConnectionListener { +interface ApiConnectionListener { suspend fun onPotentiallyBlocked( path: String?,