Rename GetUrlResolver to UrlContentFetcher and TemporaryMatrixClientFactory.createTemporaryMatrixClient to just create

This commit is contained in:
Jorge Martín
2026-08-11 09:30:22 +02:00
committed by Jorge Martin Espinosa
parent dbc28df3eb
commit e371b46c68
23 changed files with 55 additions and 52 deletions
@@ -19,12 +19,12 @@ import io.element.android.libraries.core.extensions.mapCatchingExceptions
import io.element.android.libraries.core.extensions.runCatchingExceptions
import io.element.android.libraries.core.uri.ensureProtocol
import io.element.android.libraries.di.annotations.AppCoroutineScope
import io.element.android.libraries.matrix.api.GetUrlResolver
import io.element.android.libraries.matrix.api.UrlContentFetcher
import io.element.android.libraries.matrix.api.exception.ClientException
import io.element.android.libraries.wellknown.api.ElementWellKnown
import io.element.android.libraries.wellknown.api.ElementWellKnownParser
import io.element.android.libraries.wellknown.api.EnterpriseRemoteConfigSource
import io.element.android.libraries.wellknown.api.ElementWellknownStore
import io.element.android.libraries.wellknown.api.EnterpriseRemoteConfigSource
import io.element.android.libraries.wellknown.api.WellknownRetriever
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
import kotlinx.coroutines.CoroutineScope
@@ -37,13 +37,13 @@ class DefaultWellknownRetriever(
private val elementWellknownStoreFactory: ElementWellknownStore.Factory,
private val enterpriseService: EnterpriseService,
private val elementWellKnownParser: ElementWellKnownParser,
@Assisted private val getUrlResolver: GetUrlResolver,
@Assisted private val urlContentFetcher: UrlContentFetcher,
@AppCoroutineScope private val coroutineScope: CoroutineScope,
) : WellknownRetriever {
@ContributesBinding(AppScope::class)
@AssistedFactory
fun interface Factory : WellknownRetriever.Factory {
override fun create(getUrlResolver: GetUrlResolver): DefaultWellknownRetriever
override fun create(urlContentFetcher: UrlContentFetcher): DefaultWellknownRetriever
}
override suspend fun getElementWellKnown(
@@ -95,7 +95,7 @@ class DefaultWellknownRetriever(
source: EnterpriseRemoteConfigSource,
store: ElementWellknownStore
): WellknownRetrieverResult<ElementWellKnown> {
return getUrlResolver
return urlContentFetcher
.getUrl(url(host, source))
.mapCatchingExceptions {
val data = String(it)
@@ -13,7 +13,7 @@ import dev.zacsweers.metro.Provides
import io.element.android.features.enterprise.api.EnterpriseService
import io.element.android.libraries.di.SessionScope
import io.element.android.libraries.di.annotations.SessionCoroutineScope
import io.element.android.libraries.matrix.api.GetUrlResolver
import io.element.android.libraries.matrix.api.UrlContentFetcher
import io.element.android.libraries.wellknown.api.ElementWellKnownParser
import io.element.android.libraries.wellknown.api.ElementWellknownStore
import io.element.android.libraries.wellknown.api.WellknownRetriever
@@ -27,14 +27,14 @@ object SessionWellknownModule {
elementWellknownStoreFactory: ElementWellknownStore.Factory,
enterpriseService: EnterpriseService,
elementWellKnownParser: ElementWellKnownParser,
getUrlResolver: GetUrlResolver,
urlContentFetcher: UrlContentFetcher,
@SessionCoroutineScope coroutineScope: CoroutineScope,
): WellknownRetriever {
return DefaultWellknownRetriever(
elementWellknownStoreFactory = elementWellknownStoreFactory,
enterpriseService = enterpriseService,
elementWellKnownParser = elementWellKnownParser,
getUrlResolver = getUrlResolver,
urlContentFetcher = urlContentFetcher,
coroutineScope = coroutineScope
)
}
@@ -14,7 +14,7 @@ import com.google.common.truth.Truth.assertThat
import io.element.android.features.enterprise.test.FakeEnterpriseService
import io.element.android.features.wellknown.test.FakeElementWellknownStore
import io.element.android.features.wellknown.test.anElementWellKnown
import io.element.android.libraries.matrix.api.GetUrlResolver
import io.element.android.libraries.matrix.api.UrlContentFetcher
import io.element.android.libraries.matrix.api.exception.ClientException
import io.element.android.libraries.wellknown.api.ElementWellKnown
import io.element.android.libraries.wellknown.api.ElementWellKnownParser
@@ -31,7 +31,7 @@ class DefaultWellknownRetrieverTest {
@Test
fun `get element wellknown calls resolver and parser`() = runTest {
val parser = lambdaRecorder<String, Result<ElementWellKnown>> { Result.success(anElementWellKnown()) }
val resolver = SpyGetUrlResolver { Result.success(WELLKNOWN_CONTENT.toByteArray()) }
val resolver = SpyUrlContentFetcher { Result.success(WELLKNOWN_CONTENT.toByteArray()) }
val sut = createDefaultWellknownRetriever(
elementWellKnownParser = parser,
urlResolver = resolver,
@@ -54,7 +54,7 @@ class DefaultWellknownRetrieverTest {
@Test
fun `get element wellknown network error`() = runTest {
val resolver = SpyGetUrlResolver { Result.failure(IllegalStateException("Network error")) }
val resolver = SpyUrlContentFetcher { Result.failure(IllegalStateException("Network error")) }
val sut = createDefaultWellknownRetriever(urlResolver = resolver)
assertThat(sut.getElementWellKnown(WELLKNOWN_URL, EnterpriseRemoteConfigSource.WELLKNOWN_ENDPOINT))
.isInstanceOf(WellknownRetrieverResult.Error::class.java)
@@ -62,7 +62,7 @@ class DefaultWellknownRetrieverTest {
@Test
fun `get element wellknown 404 http error counts as not found`() = runTest {
val resolver = SpyGetUrlResolver { Result.failure(ClientException.Generic("Http error: 404", null)) }
val resolver = SpyUrlContentFetcher { Result.failure(ClientException.Generic("Http error: 404", null)) }
val sut = createDefaultWellknownRetriever(urlResolver = resolver)
assertThat(sut.getElementWellKnown(WELLKNOWN_URL, EnterpriseRemoteConfigSource.WELLKNOWN_ENDPOINT))
.isInstanceOf(WellknownRetrieverResult.NotFound::class.java)
@@ -72,7 +72,7 @@ class DefaultWellknownRetrieverTest {
fun `get element wellknown was overridden`() = runTest {
val wellKnown = anElementWellKnown()
val resolver = SpyGetUrlResolver { Result.success(WELLKNOWN_CONTENT.toByteArray()) }
val resolver = SpyUrlContentFetcher { Result.success(WELLKNOWN_CONTENT.toByteArray()) }
val sut = createDefaultWellknownRetriever(
enterpriseService = FakeEnterpriseService(
@@ -94,12 +94,12 @@ class DefaultWellknownRetrieverTest {
cacheStore: FakeElementWellknownStore = FakeElementWellknownStore(),
elementWellKnownParser: ElementWellKnownParser = { Result.success(expectedElementWellKnown) },
enterpriseService: FakeEnterpriseService = FakeEnterpriseService(overrideWellKnownResult = { null }),
urlResolver: GetUrlResolver = SpyGetUrlResolver { Result.success(WELLKNOWN_CONTENT.toByteArray()) },
urlResolver: UrlContentFetcher = SpyUrlContentFetcher { Result.success(WELLKNOWN_CONTENT.toByteArray()) },
) = DefaultWellknownRetriever(
elementWellknownStoreFactory = { cacheStore },
enterpriseService = enterpriseService,
elementWellKnownParser = elementWellKnownParser,
getUrlResolver = urlResolver,
urlContentFetcher = urlResolver,
coroutineScope = backgroundScope,
)
@@ -130,7 +130,7 @@ class DefaultWellknownRetrieverTest {
}
}
private class SpyGetUrlResolver(lambda: (String) -> Result<ByteArray>) : GetUrlResolver {
private class SpyUrlContentFetcher(lambda: (String) -> Result<ByteArray>) : UrlContentFetcher {
private val spy = lambdaRecorder<String, Result<ByteArray>> { lambda(it) }
override suspend fun getUrl(url: String): Result<ByteArray> {