diff --git a/app/src/main/java/com/github/libretube/helpers/ProxyHelper.kt b/app/src/main/java/com/github/libretube/helpers/ProxyHelper.kt index a1f05117d..175fbd740 100644 --- a/app/src/main/java/com/github/libretube/helpers/ProxyHelper.kt +++ b/app/src/main/java/com/github/libretube/helpers/ProxyHelper.kt @@ -2,51 +2,29 @@ package com.github.libretube.helpers import com.github.libretube.api.RetrofitInstance import com.github.libretube.constants.PreferenceKeys -import java.net.URI -import java.net.URLDecoder -import java.nio.charset.StandardCharsets -import java.util.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import okhttp3.HttpUrl.Companion.toHttpUrlOrNull object ProxyHelper { - private fun getImageProxyUrl(): String? { - val url = PreferenceHelper.getString(PreferenceKeys.IMAGE_PROXY_URL, "") - return if (url != "") url else null - } - - private fun setImageProxyUrl(url: String) { - PreferenceHelper.putString(PreferenceKeys.IMAGE_PROXY_URL, url) - } - fun fetchProxyUrl() { CoroutineScope(Dispatchers.IO).launch { runCatching { RetrofitInstance.api.getConfig().imageProxyUrl?.let { - setImageProxyUrl(it) + PreferenceHelper.putString(PreferenceKeys.IMAGE_PROXY_URL, it) } } } } fun rewriteUrl(url: String?): String? { - url ?: return null + val proxyUrl = PreferenceHelper.getString(PreferenceKeys.IMAGE_PROXY_URL, "") + .toHttpUrlOrNull() ?: return url - val proxyUrl = getImageProxyUrl() - proxyUrl ?: return url - - runCatching { - val originalUri = URI(url) - val newUri = URI( - originalUri.scheme.lowercase(Locale.US), - URI(proxyUrl).authority, - originalUri.path, - originalUri.query, - originalUri.fragment - ) - return URLDecoder.decode(newUri.toString(), StandardCharsets.UTF_8.toString()) - } - return url + return url?.toHttpUrlOrNull()?.newBuilder() + ?.host(proxyUrl.host) + ?.port(proxyUrl.port) + ?.toString() } }