Use uri-reference-kmp in commonMain. Remove platform-specific implementations.
This commit is contained in:
@@ -124,7 +124,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
binaries.framework {
|
binaries.framework {
|
||||||
baseName = xcfName
|
baseName = xcfName
|
||||||
//isStatic = true
|
isStatic = true
|
||||||
binaryOption("bundleId", "com.vitorpamplona.quartz")
|
binaryOption("bundleId", "com.vitorpamplona.quartz")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,7 +135,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
binaries.framework {
|
binaries.framework {
|
||||||
baseName = xcfName
|
baseName = xcfName
|
||||||
//isStatic = true
|
isStatic = true
|
||||||
binaryOption("bundleId", "com.vitorpamplona.quartz")
|
binaryOption("bundleId", "com.vitorpamplona.quartz")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -183,6 +183,9 @@ kotlin {
|
|||||||
// SQLite KMP driver for event store
|
// SQLite KMP driver for event store
|
||||||
api(libs.androidx.sqlite)
|
api(libs.androidx.sqlite)
|
||||||
implementation(libs.androidx.sqlite.bundled)
|
implementation(libs.androidx.sqlite.bundled)
|
||||||
|
|
||||||
|
// RFC3986 library(normalizes URLs)
|
||||||
|
api(libs.uri.reference.kmp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,9 +206,6 @@ kotlin {
|
|||||||
dependsOn(commonMain.get())
|
dependsOn(commonMain.get())
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// Normalizes URLs
|
|
||||||
api(libs.rfc3986.normalizer)
|
|
||||||
|
|
||||||
// Performant Parser of JSONs into Events
|
// Performant Parser of JSONs into Events
|
||||||
api(libs.jackson.module.kotlin)
|
api(libs.jackson.module.kotlin)
|
||||||
|
|
||||||
@@ -311,7 +311,6 @@ kotlin {
|
|||||||
implementation(libs.dev.whyoleg.cryptography.provider.apple.optimal)
|
implementation(libs.dev.whyoleg.cryptography.provider.apple.optimal)
|
||||||
implementation("io.github.andreypfau:kotlinx-crypto-hmac:0.0.4")
|
implementation("io.github.andreypfau:kotlinx-crypto-hmac:0.0.4")
|
||||||
implementation("io.github.andreypfau:kotlinx-crypto-sha2:0.0.4")
|
implementation("io.github.andreypfau:kotlinx-crypto-sha2:0.0.4")
|
||||||
implementation(libs.uri.reference.kmp)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,12 +20,47 @@
|
|||||||
*/
|
*/
|
||||||
package com.vitorpamplona.quartz.utils
|
package com.vitorpamplona.quartz.utils
|
||||||
|
|
||||||
expect object Rfc3986 {
|
import io.kotlingeekdev.urireference.URIReference
|
||||||
fun normalize(uri: String): String
|
|
||||||
|
|
||||||
fun isValidUrl(url: String): Boolean
|
object Rfc3986 {
|
||||||
|
fun normalize(uri: String): String = URIReference.parse(uri).normalize().toString()
|
||||||
|
|
||||||
fun normalizeAndRemoveFragment(url: String): String
|
fun isValidUrl(url: String): Boolean =
|
||||||
|
runCatching {
|
||||||
|
URIReference.parse(url)
|
||||||
|
}.isSuccess
|
||||||
|
|
||||||
fun host(url: String): String
|
fun normalizeAndRemoveFragment(url: String): String =
|
||||||
|
URIReference
|
||||||
|
.parse(url)
|
||||||
|
.normalize()!!
|
||||||
|
.toStringNoFragment()
|
||||||
|
.internIfPossible()
|
||||||
|
|
||||||
|
fun host(url: String): String =
|
||||||
|
URIReference
|
||||||
|
.parse(url)
|
||||||
|
.host
|
||||||
|
?.value
|
||||||
|
.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun URIReference.toStringSchemeHost(): String {
|
||||||
|
val sb = StringBuilder()
|
||||||
|
|
||||||
|
if (scheme != null) sb.append(scheme).append(":")
|
||||||
|
if (authority != null) sb.append("//").append(authority.toString())
|
||||||
|
|
||||||
|
return sb.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun URIReference.toStringNoFragment(): String {
|
||||||
|
val sb = StringBuilder()
|
||||||
|
|
||||||
|
if (scheme != null) sb.append(scheme).append(":")
|
||||||
|
if (host != null) sb.append("//").append(host.toString())
|
||||||
|
if (path != null) sb.append(path)
|
||||||
|
if (query != null) sb.append("?").append(query)
|
||||||
|
|
||||||
|
return sb.toString()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2025 Vitor Pamplona
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to use,
|
|
||||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
||||||
* Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
||||||
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
package com.vitorpamplona.quartz.utils
|
|
||||||
|
|
||||||
import io.kotlingeekdev.urireference.URIReference
|
|
||||||
|
|
||||||
actual object Rfc3986 {
|
|
||||||
actual fun normalize(uri: String): String = URIReference.parse(uri).normalize().toString()
|
|
||||||
|
|
||||||
actual fun isValidUrl(url: String): Boolean =
|
|
||||||
runCatching {
|
|
||||||
URIReference.parse(url)
|
|
||||||
}.isSuccess
|
|
||||||
|
|
||||||
actual fun normalizeAndRemoveFragment(url: String): String =
|
|
||||||
URIReference
|
|
||||||
.parse(url)
|
|
||||||
.normalize()!!
|
|
||||||
.toStringNoFragment()
|
|
||||||
.internIfPossible()
|
|
||||||
|
|
||||||
actual fun host(url: String): String =
|
|
||||||
URIReference
|
|
||||||
.parse(url)
|
|
||||||
.host
|
|
||||||
?.value
|
|
||||||
.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun URIReference.toStringNoFragment(): String {
|
|
||||||
val sb = StringBuilder()
|
|
||||||
|
|
||||||
if (scheme != null) sb.append(scheme).append(":")
|
|
||||||
if (host != null) sb.append("//").append(host.toString())
|
|
||||||
if (path != null) sb.append(path)
|
|
||||||
if (query != null) sb.append("?").append(query)
|
|
||||||
|
|
||||||
return sb.toString()
|
|
||||||
}
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2025 Vitor Pamplona
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to use,
|
|
||||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
|
|
||||||
* Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
||||||
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
package com.vitorpamplona.quartz.utils
|
|
||||||
|
|
||||||
import org.czeal.rfc3986.URIReference
|
|
||||||
|
|
||||||
actual object Rfc3986 {
|
|
||||||
actual fun normalize(uri: String) =
|
|
||||||
URIReference
|
|
||||||
.parse(uri)
|
|
||||||
.normalize()
|
|
||||||
.toString()
|
|
||||||
|
|
||||||
actual fun isValidUrl(url: String): Boolean =
|
|
||||||
runCatching {
|
|
||||||
URIReference.parse(url)
|
|
||||||
}.isSuccess
|
|
||||||
|
|
||||||
actual fun normalizeAndRemoveFragment(url: String): String =
|
|
||||||
URIReference
|
|
||||||
.parse(url)
|
|
||||||
.normalize()
|
|
||||||
.toStringNoFragment()
|
|
||||||
.intern()
|
|
||||||
|
|
||||||
actual fun host(url: String): String = URIReference.parse(url).host.value
|
|
||||||
}
|
|
||||||
|
|
||||||
fun URIReference.toStringSchemeHost(): String {
|
|
||||||
val sb = StringBuilder()
|
|
||||||
|
|
||||||
if (scheme != null) sb.append(scheme).append(":")
|
|
||||||
if (authority != null) sb.append("//").append(authority.toString())
|
|
||||||
|
|
||||||
return sb.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun URIReference.toStringNoFragment(): String {
|
|
||||||
val sb = StringBuilder()
|
|
||||||
|
|
||||||
if (scheme != null) sb.append(scheme).append(":")
|
|
||||||
if (authority != null) sb.append("//").append(authority.toString())
|
|
||||||
if (path != null) sb.append(path)
|
|
||||||
if (query != null) sb.append("?").append(query)
|
|
||||||
|
|
||||||
return sb.toString()
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user