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 kmkVersionCode = 1
extName = 'Kavita' extName = 'Kavita'
extClass = '.KavitaFactory' extClass = '.KavitaFactory'
extVersionCode = 26 extVersionCode = 27
isNsfw = false isNsfw = false
} }

View File

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