Use wsrv.nl service (#778)

* Add wsrv.nl datasaver service

* Add code comments
This commit is contained in:
Wisest_wizard
2023-03-16 03:14:57 +05:30
committed by GitHub
parent 82f0e5bc01
commit ae712527f3
6 changed files with 51 additions and 19 deletions
+24 -3
View File
@@ -41,7 +41,7 @@ interface DataSaver {
}
fun DataSaver(source: Source, preferences: SourcePreferences): DataSaver {
return if (preferences.dataSaver().get() && source.id.toString() !in preferences.dataSaverExcludedSources().get()) {
return if (preferences.dataSaver().get() != 0 && source.id.toString() !in preferences.dataSaverExcludedSources().get()) {
return DataSaverImpl(preferences)
} else {
DataSaver.NoOp
@@ -49,6 +49,7 @@ fun DataSaver(source: Source, preferences: SourcePreferences): DataSaver {
}
private class DataSaverImpl(preferences: SourcePreferences) : DataSaver {
private val dataSaver = preferences.dataSaver().get()
private val dataSavedServer = preferences.dataSaverServer().get().trimEnd('/')
private val ignoreJpg = preferences.dataSaverIgnoreJpeg().get()
@@ -59,7 +60,7 @@ private class DataSaverImpl(preferences: SourcePreferences) : DataSaver {
private val colorBW = preferences.dataSaverColorBW().toIntRepresentation()
override fun compress(imageUrl: String): String {
return if (dataSavedServer.isNotBlank() && !imageUrl.contains(dataSavedServer)) {
return if (dataSaver == 2 || (dataSaver == 1 && dataSavedServer.isNotBlank() && !imageUrl.contains(dataSavedServer))) {
when {
imageUrl.contains(".jpeg", true) || imageUrl.contains(".jpg", true) -> if (ignoreJpg) imageUrl else getUrl(imageUrl)
imageUrl.contains(".gif", true) -> if (ignoreGif) imageUrl else getUrl(imageUrl)
@@ -71,7 +72,27 @@ private class DataSaverImpl(preferences: SourcePreferences) : DataSaver {
}
private fun getUrl(imageUrl: String): String {
return "$dataSavedServer/?jpg=$format&l=$quality&bw=$colorBW&url=$imageUrl"
if (dataSaver == 1) {
// Network Request sent for the Bandwidth Hero Proxy server
return "$dataSavedServer/?jpg=$format&l=$quality&bw=$colorBW&url=$imageUrl"
} else {
// Network Request sent to wsrv
if (imageUrl.contains(".webp", true) || imageUrl.contains(".gif", true)) {
if (format.toInt() == 0) {
// Preserve output image extension for animated images(.webp and .gif)
return "https://wsrv.nl/?url=$imageUrl&q=$quality&n=-1"
} else {
// Do not preserve output Extension if User asked to convert into Jpeg
return "https://wsrv.nl/?url=$imageUrl&output=jpg&q=$quality&n=-1"
}
} else {
if (format.toInt() == 1) {
return "https://wsrv.nl/?url=$imageUrl&output=jpg&q=$quality"
} else {
return "https://wsrv.nl/?url=$imageUrl&output=webp&q=$quality"
}
}
}
}
private fun Preference<Boolean>.toIntRepresentation() = if (get()) "1" else "0"