Refactor cert pins (npe on calendar).

This commit is contained in:
dkadrikj
2020-12-18 14:35:55 +01:00
parent d31c74b8de
commit 41d5cb8bf0
7 changed files with 14 additions and 27 deletions
@@ -95,17 +95,13 @@ class AuthRepositoryImplTest {
apiProvider = ApiProvider(apiFactory, sessionProvider)
every {
apiFactory.create(
interfaceClass = AuthenticationApi::class,
certificatePins = Constants.DEFAULT_SPKI_PINS,
alternativeApiPins = Constants.ALTERNATIVE_API_SPKI_PINS
interfaceClass = AuthenticationApi::class
)
} returns apiManager
every {
apiFactory.create(
SessionId(testSessionId),
interfaceClass = AuthenticationApi::class,
certificatePins = Constants.DEFAULT_SPKI_PINS,
alternativeApiPins = Constants.ALTERNATIVE_API_SPKI_PINS
interfaceClass = AuthenticationApi::class
)
} returns apiManager
repository = AuthRepositoryImpl(apiProvider)
@@ -65,10 +65,7 @@ class HumanVerificationRemoteRepositoryImplTest {
MockKAnnotations.init(this)
apiProvider = ApiProvider(apiFactory, sessionProvider)
every {
apiFactory.create(
sessionId, HumanVerificationApi::class, certificatePins = Constants.DEFAULT_SPKI_PINS,
alternativeApiPins = Constants.ALTERNATIVE_API_SPKI_PINS
)
apiFactory.create(sessionId, HumanVerificationApi::class)
} returns apiManager
}
+1 -1
View File
@@ -23,7 +23,7 @@ plugins {
kotlin("android")
}
libVersion = Version(0, 4, 2)
libVersion = Version(0, 4, 3)
android()
+1 -1
View File
@@ -25,7 +25,7 @@ plugins {
kotlin("plugin.serialization")
}
libVersion = Version(0, 4, 2)
libVersion = Version(0, 4, 3)
android()
@@ -20,7 +20,6 @@ package me.proton.core.network.data
import me.proton.core.domain.entity.UserId
import me.proton.core.network.data.di.ApiFactory
import me.proton.core.network.data.di.Constants
import me.proton.core.network.data.protonApi.BaseRetrofitApi
import me.proton.core.network.domain.ApiManager
import me.proton.core.network.domain.session.SessionId
@@ -35,9 +34,7 @@ import java.util.concurrent.ConcurrentMap
*/
class ApiProvider(
val apiFactory: ApiFactory,
val sessionProvider: SessionProvider,
val certificatePins: Array<String>? = null,
val alternativeApiPins: List<String>? = null
val sessionProvider: SessionProvider
) {
val instances: ConcurrentHashMap<String, ConcurrentHashMap<String, Reference<ApiManager<*>>>> =
ConcurrentHashMap()
@@ -47,7 +44,7 @@ class ApiProvider(
): ApiManager<out Api> = get(sessionProvider.getSessionId(userId))
inline fun <reified Api : BaseRetrofitApi> get(
sessionId: SessionId? = null
sessionId: SessionId? = null,
): ApiManager<out Api> {
// ConcurrentHashMap does not allow null to be used as a key or value.
// If sessionId == null -> sessionName = "null".
@@ -57,12 +54,7 @@ class ApiProvider(
return instances
.getOrPut(sessionName) { ConcurrentHashMap() }
.getOrPutWeakRef(className) {
apiFactory.create(
sessionId = sessionId,
interfaceClass = Api::class,
certificatePins = certificatePins ?: Constants.DEFAULT_SPKI_PINS,
alternativeApiPins = alternativeApiPins ?: Constants.ALTERNATIVE_API_SPKI_PINS
)
apiFactory.create(sessionId = sessionId, interfaceClass = Api::class)
} as ApiManager<out Api>
}
@@ -71,7 +71,9 @@ class ApiFactory(
private val sessionProvider: SessionProvider,
private val sessionListener: SessionListener,
private val cookieStore: ProtonCookieStore,
scope: CoroutineScope
scope: CoroutineScope,
private val certificatePins: Array<String> = Constants.DEFAULT_SPKI_PINS,
private val alternativeApiPins: List<String> = Constants.ALTERNATIVE_API_SPKI_PINS,
) {
@OptIn(ObsoleteCoroutinesApi::class)
@@ -96,8 +98,8 @@ class ApiFactory(
sessionId: SessionId? = null,
interfaceClass: KClass<Api>,
clientErrorHandlers: List<ApiErrorHandler<Api>> = emptyList(),
certificatePins: Array<String>,
alternativeApiPins: List<String>
certificatePins: Array<String> = this@ApiFactory.certificatePins,
alternativeApiPins: List<String> = this@ApiFactory.alternativeApiPins
): ApiManager<Api> {
val pinningStrategy = { builder: OkHttpClient.Builder ->
initPinning(builder, URI(baseUrl).host, certificatePins)
+1 -1
View File
@@ -24,7 +24,7 @@ plugins {
kotlin("plugin.serialization")
}
libVersion = Version(0, 3, 4)
libVersion = Version(0, 4, 3)
dependencies {