Add cookie header and handle redirect for cronetRequest

This commit is contained in:
FooIbar authored and tarsin committed 2023-07-02 07:20:46 +08:00
1 parent 52c21319d6
commit ac680afad3
2 files changed
+7 -5

No files matched your search

@@ -1,6 +1,7 @@
package com.hippo.ehviewer.spider
import com.hippo.ehviewer.EhApplication
import eu.kanade.tachiyomi.util.system.logcat
import io.ktor.utils.io.pool.DirectByteBufferPool
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.launch
@@ -16,6 +17,7 @@ import kotlin.coroutines.Continuation
import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException
private const val TAG = "CronetRequest"
private val pool = DirectByteBufferPool(32)
val cronetHttpClient: CronetEngine = CronetEngine.Builder(appCtx).apply {
@@ -39,7 +41,8 @@ class CronetRequest : AutoCloseable {
lateinit var readerCont: Continuation<Long>
val callback = object : UrlRequest.Callback() {
override fun onRedirectReceived(req: UrlRequest, info: UrlResponseInfo, url: String) {
// No-op
logcat(tag = TAG) { "Redirected to $url" }
req.followRedirect()
}
override fun onResponseStarted(req: UrlRequest, info: UrlResponseInfo) {
@@ -62,10 +65,6 @@ class CronetRequest : AutoCloseable {
override fun onFailed(req: UrlRequest, info: UrlResponseInfo?, e: CronetException) {
daemonCont.resumeWithException(e)
}
override fun onCanceled(req: UrlRequest, info: UrlResponseInfo?) {
// No-op
}
}
val buffer = pool.borrow()
@@ -20,6 +20,7 @@ import android.os.Build
import android.os.ParcelFileDescriptor
import android.os.ParcelFileDescriptor.MODE_READ_WRITE
import com.hippo.ehviewer.EhDB
import com.hippo.ehviewer.client.EhCookieStore
import com.hippo.ehviewer.client.EhUtils.getSuitableTitle
import com.hippo.ehviewer.client.data.GalleryInfo
import com.hippo.ehviewer.client.ehRequest
@@ -35,6 +36,7 @@ import com.hippo.ehviewer.util.sendTo
import com.hippo.ehviewer.yorozuya.FileUtils
import com.hippo.unifile.UniFile
import com.hippo.unifile.openOutputStream
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.Response
import okio.Buffer
@@ -131,6 +133,7 @@ class SpiderDen(private val mGalleryInfo: GalleryInfo) {
): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
cronetRequest(url) {
addHeader("Cookie", EhCookieStore.getCookieHeader(url.toHttpUrl()))
referer?.let { addHeader("Referer", it) }
disableCache()
}.execute { info ->