mirror of
https://github.com/ProtonMail/protoncore_android.git
synced 2026-06-14 09:54:49 +00:00
Refactor cert pins (npe on calendar).
This commit is contained in:
+2
-6
@@ -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)
|
||||
|
||||
+1
-4
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ plugins {
|
||||
kotlin("android")
|
||||
}
|
||||
|
||||
libVersion = Version(0, 4, 2)
|
||||
libVersion = Version(0, 4, 3)
|
||||
|
||||
android()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -24,7 +24,7 @@ plugins {
|
||||
kotlin("plugin.serialization")
|
||||
}
|
||||
|
||||
libVersion = Version(0, 3, 4)
|
||||
libVersion = Version(0, 4, 3)
|
||||
|
||||
dependencies {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user