From 18d4fef99cedb91e7e2b62d43b47e2e9f3d5d905 Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski Date: Tue, 26 Nov 2024 15:04:55 +0100 Subject: [PATCH] Make fuzzy url parsing logic reusable --- CHANGELOG.md | 1 + .../net/folivo/trixnity/client/serverDiscovery.kt | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 831735281..b71045f64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - use Blob in media-indexeddb +- Expose fuzzy url parsing logic for server discovery ### Deprecated diff --git a/trixnity-client/src/commonMain/kotlin/net/folivo/trixnity/client/serverDiscovery.kt b/trixnity-client/src/commonMain/kotlin/net/folivo/trixnity/client/serverDiscovery.kt index 74ad22703..3fa20ff11 100644 --- a/trixnity-client/src/commonMain/kotlin/net/folivo/trixnity/client/serverDiscovery.kt +++ b/trixnity-client/src/commonMain/kotlin/net/folivo/trixnity/client/serverDiscovery.kt @@ -6,6 +6,13 @@ import io.ktor.http.* import net.folivo.trixnity.clientserverapi.client.MatrixClientServerApiClientImpl import net.folivo.trixnity.core.model.UserId +fun fuzzyParseUrl(url: String): Url = + when { + url.startsWith("http://", ignoreCase = true) || + url.startsWith("https://", ignoreCase = true) -> Url(url) + else -> Url("https://$url") + } + suspend fun UserId.serverDiscovery( httpClientEngine: HttpClientEngine? = null, httpClientConfig: (HttpClientConfig<*>.() -> Unit)? = null, @@ -15,12 +22,7 @@ suspend fun String.serverDiscovery( httpClientEngine: HttpClientEngine? = null, httpClientConfig: (HttpClientConfig<*>.() -> Unit)? = null, ): Result = runCatching { - val hostnameBaseUrl = - when { - startsWith("http://") || startsWith("https://") -> Url(this) - else -> Url("https://$this") - } - return hostnameBaseUrl.serverDiscovery(httpClientEngine, httpClientConfig) + return fuzzyParseUrl(this).serverDiscovery(httpClientEngine, httpClientConfig) } suspend fun Url.serverDiscovery( -- GitLab