From 14055894dc5da1977d6cd9cb5745b939dc8e5b24 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 24 Jul 2025 09:22:24 -0400 Subject: [PATCH] Refactoring in the relay url normalizer --- .../relay/normalizer/RelayUrlNormalizer.kt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/normalizer/RelayUrlNormalizer.kt b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/normalizer/RelayUrlNormalizer.kt index 5d24e224d..40a0e51c2 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/normalizer/RelayUrlNormalizer.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/nip01Core/relay/normalizer/RelayUrlNormalizer.kt @@ -46,6 +46,12 @@ class RelayUrlNormalizer { fun isRelaySchemePrefixInsecure(url: String) = url[2] == ':' && url[3] == '/' && url[4] == '/' && url[5] != '/' + fun isHttpPrefix(url: String) = url.length > 8 && url[0] == 'h' && url[1] == 't' && url[2] == 't' && url[3] == 'p' + + fun isHttpSSuffix(url: String) = url[4] == 's' && url[5] == ':' && url[6] == '/' && url[7] == '/' + + fun isHttpSuffix(url: String) = url[4] == ':' && url[5] == '/' && url[6] == '/' + fun isRelayUrl(url: String): Boolean { val trimmed = url.trim().ifEmpty { return false } @@ -72,7 +78,7 @@ class RelayUrlNormalizer { @OptIn(ExperimentalContracts::class) fun fix(url: String): String? { - val trimmed = url.trim().ifEmpty { return null } + val trimmed = url.trim() if (trimmed.isEmpty()) return null @@ -84,11 +90,11 @@ class RelayUrlNormalizer { } // fast for good https:// urls - if (trimmed.length > 8 && trimmed[0] == 'h' && trimmed[1] == 't' && trimmed[2] == 't' && trimmed[3] == 'p') { - if (trimmed[4] == 's' && trimmed[5] == ':' && trimmed[6] == '/' && trimmed[7] == '/') { + if (isHttpPrefix(trimmed)) { + if (isHttpSSuffix(trimmed)) { // https:// return "wss://${trimmed.drop(8)}" - } else if (trimmed[4] == ':' && trimmed[5] == '/' && trimmed[6] == '/') { + } else if (isHttpSuffix(trimmed)) { // http:// return "ws://${trimmed.drop(7)}" }