From c9159166d28ee2acd23439749798ca5bfd7b68c6 Mon Sep 17 00:00:00 2001 From: Derek Schmidt Date: Sat, 30 May 2020 18:54:57 -0700 Subject: [PATCH] Avoid java.net.URL's RFC 2396 parsing --- .../com/github/apognu/otter/utils/Util.kt | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/github/apognu/otter/utils/Util.kt b/app/src/main/java/com/github/apognu/otter/utils/Util.kt index c927335..3bb02d9 100644 --- a/app/src/main/java/com/github/apognu/otter/utils/Util.kt +++ b/app/src/main/java/com/github/apognu/otter/utils/Util.kt @@ -5,6 +5,7 @@ import android.widget.Toast import com.google.android.exoplayer2.util.Log import com.preference.PowerPreference import java.net.URI +import java.net.URL fun Context?.toast(message: String, length: Int = Toast.LENGTH_SHORT) { if (this != null) { @@ -20,23 +21,18 @@ fun Any.log() { Log.d("FUNKWHALE", this.toString()) } -fun maybeNormalizeUrl(url: String?): String? { - if (url == null || url.isEmpty()) return null +fun maybeNormalizeUrl(rawUrl: String?): String? { + if (rawUrl == null || rawUrl.isEmpty()) return null - val fallbackHost = PowerPreference.getFileByName(AppContext.PREFS_CREDENTIALS).getString("hostname") - val uri = URI(url).takeIf { it.host != null } ?: URI("$fallbackHost$url") - - return uri.run { - URI("https", host, path, query, null) - }.toString() + return mustNormalizeUrl(rawUrl) } -fun mustNormalizeUrl(url: String): String { +fun mustNormalizeUrl(rawUrl: String): String { val fallbackHost = PowerPreference.getFileByName(AppContext.PREFS_CREDENTIALS).getString("hostname") - val uri = URI(url).takeIf { it.host != null } ?: URI("$fallbackHost$url") + val uri = URI(rawUrl).takeIf { it.host != null } ?: URI("$fallbackHost$rawUrl") - return uri.run { - URI("https", host, path, query, null) + return uri.toURL().run { + URL("https", host, file) }.toString() }