From a9c41e1d55546e59a18a3c5c459bd0dbedc58b53 Mon Sep 17 00:00:00 2001 From: KotlinGeekDev Date: Mon, 23 Mar 2026 19:31:58 +0100 Subject: [PATCH] Introduce uri-reference-kmp and replace uriBridge usages with it. --- quartz/build.gradle.kts | 3 +++ .../vitorpamplona/quartz/utils/Rfc3986.ios.kt | 20 +++++++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/quartz/build.gradle.kts b/quartz/build.gradle.kts index 93a3214c5..3aad8ae61 100644 --- a/quartz/build.gradle.kts +++ b/quartz/build.gradle.kts @@ -144,6 +144,7 @@ kotlin { } binaries.framework { baseName = xcfName + //isStatic = true binaryOption("bundleId", "com.vitorpamplona.quartz") } } @@ -154,6 +155,7 @@ kotlin { } binaries.framework { baseName = xcfName + //isStatic = true binaryOption("bundleId", "com.vitorpamplona.quartz") } } @@ -329,6 +331,7 @@ kotlin { implementation(libs.dev.whyoleg.cryptography.provider.apple.optimal) implementation("io.github.andreypfau:kotlinx-crypto-hmac:0.0.4") implementation("io.github.andreypfau:kotlinx-crypto-sha2:0.0.4") + implementation("io.github.kotlingeekdev:uri-reference-kmp:1.0") } } diff --git a/quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/Rfc3986.ios.kt b/quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/Rfc3986.ios.kt index c782de2f9..9c7784a03 100644 --- a/quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/Rfc3986.ios.kt +++ b/quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/Rfc3986.ios.kt @@ -20,30 +20,30 @@ */ package com.vitorpamplona.quartz.utils +import io.kotlingeekdev.urireference.URIReference import kotlinx.cinterop.ExperimentalForeignApi -import platform.Foundation.NSURLComponents -import swiftbridge.Rfc3986UriBridge @OptIn(ExperimentalForeignApi::class) actual object Rfc3986 { - private val rfc3986UriBridge = Rfc3986UriBridge() actual fun normalize(uri: String): String = - rfc3986UriBridge - .normalizeUrlWithUrl(uri, null) - ?.let { if (it.last() == '/') it else "$it/" } ?: throw Exception("Could not normalize URI: $uri") + URIReference.parse(uri).normalize().toString() - actual fun isValidUrl(url: String): Boolean = rfc3986UriBridge.isUrlValidWithUrl(url) + actual fun isValidUrl(url: String): Boolean = runCatching { + URIReference.parse(url) + }.isSuccess actual fun normalizeAndRemoveFragment(url: String): String = - NSURLComponents(url) + URIReference + .parse(url) + .normalize()!! .toStringNoFragment() .internIfPossible() - actual fun host(url: String): String = rfc3986UriBridge.hostFromUriWithUrl(url, null) ?: throw Exception("Could not retrieve host from URL.") + actual fun host(url: String): String = URIReference.parse(url).host?.value.toString() } -fun NSURLComponents.toStringNoFragment(): String { +fun URIReference.toStringNoFragment(): String { val sb = StringBuilder() if (scheme != null) sb.append(scheme).append(":")