Use raw Kavita cover query URLs
Some checks failed
CI / Prepare job (push) Has been cancelled
CI / Build extensions (${{ matrix.chunk.number }}) (push) Has been cancelled
CI / Publish extension repo (push) Has been cancelled
Create Release on Merge / release (push) Has been cancelled

This commit is contained in:
2026-05-23 17:59:58 +09:00
parent ed33de3580
commit b38824219f
2 changed files with 5 additions and 29 deletions

View File

@@ -2,7 +2,7 @@ ext {
kmkVersionCode = 1
extName = 'Kavita'
extClass = '.KavitaFactory'
extVersionCode = 26
extVersionCode = 27
isNsfw = false
}

View File

@@ -1,8 +1,5 @@
package eu.kanade.tachiyomi.extension.all.kavita
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import java.net.URLEncoder
internal object KavitaImageUrls {
fun cover(
apiUrl: String,
@@ -12,38 +9,17 @@ internal object KavitaImageUrls {
apiKey: String,
timestamp: String? = null,
): String {
val builder = "$apiUrl/image/$endpoint".toHttpUrlOrNull()?.newBuilder()
?.addQueryParameter(idParam, id.toString())
?.addQueryParameter("apiKey", apiKey)
if (!timestamp.isNullOrBlank()) {
builder?.addQueryParameter("ts", timestamp)
}
return builder?.build()?.toString()
?: "$apiUrl/image/$endpoint?$idParam=$id&apiKey=${encodeQuery(apiKey)}${timestampQuery(timestamp)}"
return "$apiUrl/image/$endpoint?$idParam=$id&apiKey=$apiKey${timestampQuery(timestamp)}"
}
fun imagePath(apiUrl: String, path: String, apiKey: String): String {
val separator = if (path.startsWith("/")) "" else "/"
val url = "$apiUrl/image$separator$path"
return url.toHttpUrlOrNull()?.newBuilder()
?.addQueryParameter("apiKey", apiKey)
?.build()
?.toString()
?: "$url?apiKey=${encodeQuery(apiKey)}"
return "$apiUrl/image$separator$path?apiKey=$apiKey"
}
fun withTimestamp(url: String, timestamp: String): String =
url.toHttpUrlOrNull()?.newBuilder()
?.addQueryParameter("ts", timestamp)
?.build()
?.toString()
?: "$url${if (url.contains("?")) "&" else "?"}ts=${encodeQuery(timestamp)}"
"$url${if (url.contains("?")) "&" else "?"}ts=$timestamp"
private fun timestampQuery(timestamp: String?): String =
if (timestamp.isNullOrBlank()) "" else "&ts=${encodeQuery(timestamp)}"
private fun encodeQuery(value: String): String =
URLEncoder.encode(value, "UTF-8").replace("+", "%20")
if (timestamp.isNullOrBlank()) "" else "&ts=$timestamp"
}