Update parsers
This commit is contained in:
@@ -82,7 +82,7 @@ afterEvaluate {
|
|||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
//noinspection GradleDependency
|
//noinspection GradleDependency
|
||||||
implementation('com.github.KotatsuApp:kotatsu-parsers:d218ad5a67') {
|
implementation('com.github.KotatsuApp:kotatsu-parsers:51da0b62c1') {
|
||||||
exclude group: 'org.json', module: 'json'
|
exclude group: 'org.json', module: 'json'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import android.util.Log
|
|||||||
import dagger.Lazy
|
import dagger.Lazy
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
import okhttp3.Interceptor
|
import okhttp3.Interceptor
|
||||||
|
import okhttp3.Interceptor.Chain
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
|
import okio.IOException
|
||||||
import org.koitharu.kotatsu.BuildConfig
|
import org.koitharu.kotatsu.BuildConfig
|
||||||
import org.koitharu.kotatsu.core.parser.MangaLoaderContextImpl
|
import org.koitharu.kotatsu.core.parser.MangaLoaderContextImpl
|
||||||
import org.koitharu.kotatsu.core.parser.MangaRepository
|
import org.koitharu.kotatsu.core.parser.MangaRepository
|
||||||
@@ -13,6 +15,7 @@ import org.koitharu.kotatsu.core.parser.RemoteMangaRepository
|
|||||||
import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug
|
import org.koitharu.kotatsu.core.util.ext.printStackTraceDebug
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||||
import org.koitharu.kotatsu.parsers.util.mergeWith
|
import org.koitharu.kotatsu.parsers.util.mergeWith
|
||||||
|
import org.koitharu.kotatsu.parsers.util.runCatchingCancellable
|
||||||
import java.net.IDN
|
import java.net.IDN
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
@@ -23,7 +26,7 @@ class CommonHeadersInterceptor @Inject constructor(
|
|||||||
private val mangaLoaderContextLazy: Lazy<MangaLoaderContextImpl>,
|
private val mangaLoaderContextLazy: Lazy<MangaLoaderContextImpl>,
|
||||||
) : Interceptor {
|
) : Interceptor {
|
||||||
|
|
||||||
override fun intercept(chain: Interceptor.Chain): Response {
|
override fun intercept(chain: Chain): Response {
|
||||||
val request = chain.request()
|
val request = chain.request()
|
||||||
val source = request.tag(MangaSource::class.java)
|
val source = request.tag(MangaSource::class.java)
|
||||||
val repository = if (source != null) {
|
val repository = if (source != null) {
|
||||||
@@ -46,7 +49,7 @@ class CommonHeadersInterceptor @Inject constructor(
|
|||||||
headersBuilder.trySet(CommonHeaders.REFERER, "https://$idn/")
|
headersBuilder.trySet(CommonHeaders.REFERER, "https://$idn/")
|
||||||
}
|
}
|
||||||
val newRequest = request.newBuilder().headers(headersBuilder.build()).build()
|
val newRequest = request.newBuilder().headers(headersBuilder.build()).build()
|
||||||
return repository?.intercept(ProxyChain(chain, newRequest)) ?: chain.proceed(newRequest)
|
return repository?.interceptSafe(ProxyChain(chain, newRequest)) ?: chain.proceed(newRequest)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Headers.Builder.trySet(name: String, value: String) = try {
|
private fun Headers.Builder.trySet(name: String, value: String) = try {
|
||||||
@@ -55,10 +58,21 @@ class CommonHeadersInterceptor @Inject constructor(
|
|||||||
e.printStackTraceDebug()
|
e.printStackTraceDebug()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Interceptor.interceptSafe(chain: Chain): Response = runCatchingCancellable {
|
||||||
|
intercept(chain)
|
||||||
|
}.getOrElse { e ->
|
||||||
|
if (e is IOException) {
|
||||||
|
throw e
|
||||||
|
} else {
|
||||||
|
// only IOException can be safely thrown from an Interceptor
|
||||||
|
throw IOException("Error in interceptor: ${e.message}", e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class ProxyChain(
|
private class ProxyChain(
|
||||||
private val delegate: Interceptor.Chain,
|
private val delegate: Chain,
|
||||||
private val request: Request,
|
private val request: Request,
|
||||||
) : Interceptor.Chain by delegate {
|
) : Chain by delegate {
|
||||||
|
|
||||||
override fun request(): Request = request
|
override fun request(): Request = request
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import okhttp3.OkHttpClient
|
|||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
import okhttp3.ResponseBody.Companion.asResponseBody
|
import okhttp3.ResponseBody.Companion.asResponseBody
|
||||||
import okio.Buffer
|
import okio.Buffer
|
||||||
import okio.IOException
|
|
||||||
import org.koitharu.kotatsu.core.network.MangaHttpClient
|
import org.koitharu.kotatsu.core.network.MangaHttpClient
|
||||||
import org.koitharu.kotatsu.core.network.cookies.MutableCookieJar
|
import org.koitharu.kotatsu.core.network.cookies.MutableCookieJar
|
||||||
import org.koitharu.kotatsu.core.prefs.SourceSettings
|
import org.koitharu.kotatsu.core.prefs.SourceSettings
|
||||||
@@ -30,7 +29,6 @@ import org.koitharu.kotatsu.parsers.bitmap.Bitmap
|
|||||||
import org.koitharu.kotatsu.parsers.config.MangaSourceConfig
|
import org.koitharu.kotatsu.parsers.config.MangaSourceConfig
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||||
import org.koitharu.kotatsu.parsers.network.UserAgents
|
import org.koitharu.kotatsu.parsers.network.UserAgents
|
||||||
import org.koitharu.kotatsu.parsers.util.runCatchingCancellable
|
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@@ -77,10 +75,7 @@ class MangaLoaderContextImpl @Inject constructor(
|
|||||||
return LocaleListCompat.getAdjustedDefault().toList()
|
return LocaleListCompat.getAdjustedDefault().toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun redrawImageResponse(
|
override fun redrawImageResponse(response: Response, redraw: (image: Bitmap) -> Bitmap): Response {
|
||||||
response: Response,
|
|
||||||
redraw: (image: Bitmap) -> Bitmap
|
|
||||||
): Response = runCatchingCancellable {
|
|
||||||
val image = response.requireBody().byteStream()
|
val image = response.requireBody().byteStream()
|
||||||
|
|
||||||
val opts = BitmapFactory.Options()
|
val opts = BitmapFactory.Options()
|
||||||
@@ -92,15 +87,9 @@ class MangaLoaderContextImpl @Inject constructor(
|
|||||||
result.compressTo(it.outputStream())
|
result.compressTo(it.outputStream())
|
||||||
}.asResponseBody("image/jpeg".toMediaType())
|
}.asResponseBody("image/jpeg".toMediaType())
|
||||||
|
|
||||||
response.newBuilder()
|
return response.newBuilder()
|
||||||
.body(body)
|
.body(body)
|
||||||
.build()
|
.build()
|
||||||
}.getOrElse { error ->
|
|
||||||
if (error is IOException) {
|
|
||||||
throw error
|
|
||||||
} else {
|
|
||||||
throw IOException(error.message, error)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createBitmap(width: Int, height: Int): Bitmap {
|
override fun createBitmap(width: Int, height: Int): Bitmap {
|
||||||
|
|||||||
Reference in New Issue
Block a user