Xinmeitulu: intercept to fix media type of image response body (#11999)

* Xinmeitulu: intercept to fix media type of image response body

* Move interceptor into companion object
This commit is contained in:
kasperskier 2022-06-01 10:35:48 +08:00 committed by GitHub
parent c6d4f5c99c
commit c388889e02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 1 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'Xinmeitulu'
pkgNameSuffix = 'all.xinmeitulu'
extClass = '.Xinmeitulu'
extVersionCode = 1
extVersionCode = 2
isNsfw = true
}

View File

@ -9,6 +9,10 @@ import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Interceptor
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.Response
import okhttp3.ResponseBody.Companion.asResponseBody
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import rx.Observable
@ -19,6 +23,8 @@ class Xinmeitulu : ParsedHttpSource() {
override val name = "Xinmeitulu"
override val supportsLatest = false
override val client = network.client.newBuilder().addInterceptor(::contentTypeIntercept).build()
// Latest
override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException("Not Used.")
@ -79,4 +85,17 @@ class Xinmeitulu : ParsedHttpSource() {
}
override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used")
companion object {
private fun contentTypeIntercept(chain: Interceptor.Chain): Response {
val response = chain.proceed(chain.request())
if (response.header("content-type")?.startsWith("image") == true) {
val body = response.body!!.source().asResponseBody(jpegMediaType)
return response.newBuilder().body(body).build()
}
return response
}
private val jpegMediaType = "image/jpeg".toMediaType()
}
}