diff --git a/CHANGELOG.md b/CHANGELOG.md index 831735281c1a7dfddbdbce675cb03441b067a3a8..b71045f647e0650aacc29f43c3c58caf296ad046 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 74ad22703482f1d7a497c8fb71c126407140da18..3fa20ff11d35f0d3ee800e10f46675e043edcbb9 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(