mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-16 23:30:29 +05:30
53 lines
1.5 KiB
Kotlin
53 lines
1.5 KiB
Kotlin
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
|
|
|
|
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fun rewriteUrl(url: String?): String? {
|
|
url ?: return null
|
|
|
|
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
|
|
}
|
|
}
|