Mangabuff: fix (#8537)
This commit is contained in:
parent
37e0aaeb75
commit
b59238f938
@ -1,8 +1,8 @@
|
|||||||
ext {
|
ext {
|
||||||
extName = 'MangaBuff'
|
extName = 'MangaBuff'
|
||||||
extClass = '.MangaBuff'
|
extClass = '.MangaBuff'
|
||||||
extVersionCode = 1
|
extVersionCode = 2
|
||||||
isNsfw = false
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
@ -10,6 +10,7 @@ import eu.kanade.tachiyomi.source.model.Page
|
|||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
import eu.kanade.tachiyomi.source.model.SManga
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
||||||
|
import eu.kanade.tachiyomi.util.asJsoup
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.decodeFromString
|
import kotlinx.serialization.decodeFromString
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
@ -23,6 +24,7 @@ import org.jsoup.nodes.Document
|
|||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import java.io.IOException
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
@ -45,47 +47,49 @@ class MangaBuff : ParsedHttpSource() {
|
|||||||
val request = chain.request()
|
val request = chain.request()
|
||||||
|
|
||||||
if (request.method == "POST" && request.header("X-CSRF-TOKEN") == null) {
|
if (request.method == "POST" && request.header("X-CSRF-TOKEN") == null) {
|
||||||
val newRequest = request.newBuilder()
|
|
||||||
val token = getToken()
|
val token = getToken()
|
||||||
val response = chain.proceed(
|
val newRequest = request.newBuilder()
|
||||||
newRequest
|
.header("X-Requested-With", "XMLHttpRequest")
|
||||||
.addHeader("X-CSRF-TOKEN", token)
|
.header("X-CSRF-TOKEN", token)
|
||||||
.build(),
|
.build()
|
||||||
)
|
|
||||||
|
val response = chain.proceed(newRequest)
|
||||||
|
|
||||||
if (response.code == 419) {
|
if (response.code == 419) {
|
||||||
response.close()
|
response.close()
|
||||||
storedToken = null // reset the token
|
storedToken = null
|
||||||
val newToken = getToken()
|
val retryToken = getToken()
|
||||||
return chain.proceed(
|
val retryRequest = request.newBuilder()
|
||||||
newRequest
|
.header("X-Requested-With", "XMLHttpRequest")
|
||||||
.addHeader("X-CSRF-TOKEN", newToken)
|
.header("X-CSRF-TOKEN", retryToken)
|
||||||
.build(),
|
.build()
|
||||||
)
|
return chain.proceed(retryRequest)
|
||||||
}
|
}
|
||||||
|
|
||||||
return response
|
return response
|
||||||
}
|
}
|
||||||
|
|
||||||
val response = chain.proceed(request)
|
return chain.proceed(request)
|
||||||
|
|
||||||
if (response.header("Content-Type")?.contains("text/html") != true) {
|
|
||||||
return response
|
|
||||||
}
|
|
||||||
|
|
||||||
storedToken = Jsoup.parse(response.peekBody(Long.MAX_VALUE).string())
|
|
||||||
.selectFirst("head meta[name*=csrf-token]")
|
|
||||||
?.attr("content")
|
|
||||||
|
|
||||||
return response
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getToken(): String {
|
private fun getToken(): String {
|
||||||
if (storedToken.isNullOrEmpty()) {
|
storedToken?.let { return it }
|
||||||
val request = GET(baseUrl, headers)
|
|
||||||
client.newCall(request).execute().close() // updates token in interceptor
|
val request = GET(baseUrl, headers)
|
||||||
|
val response = client.newCall(request).execute()
|
||||||
|
|
||||||
|
response.use {
|
||||||
|
val document = it.asJsoup()
|
||||||
|
val token = document.select("head meta[name*=csrf-token]")
|
||||||
|
.attr("content")
|
||||||
|
|
||||||
|
if (token.isEmpty()) {
|
||||||
|
throw IOException("Unable to find CSRF token")
|
||||||
|
}
|
||||||
|
|
||||||
|
storedToken = token
|
||||||
|
return token
|
||||||
}
|
}
|
||||||
return storedToken!!
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Popular
|
// Popular
|
||||||
|
Loading…
x
Reference in New Issue
Block a user