diff --git a/src/pt/readmangas/build.gradle b/src/pt/readmangas/build.gradle index 9fa99cbf5..bf9d03f99 100644 --- a/src/pt/readmangas/build.gradle +++ b/src/pt/readmangas/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Read Mangas' extClass = '.ReadMangas' - extVersionCode = 39 + extVersionCode = 40 } apply from: "$rootDir/common.gradle" diff --git a/src/pt/readmangas/src/eu/kanade/tachiyomi/extension/pt/readmangas/ReadMangas.kt b/src/pt/readmangas/src/eu/kanade/tachiyomi/extension/pt/readmangas/ReadMangas.kt index 54f8af3e3..a3f710c71 100644 --- a/src/pt/readmangas/src/eu/kanade/tachiyomi/extension/pt/readmangas/ReadMangas.kt +++ b/src/pt/readmangas/src/eu/kanade/tachiyomi/extension/pt/readmangas/ReadMangas.kt @@ -21,6 +21,8 @@ import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.buildJsonArray import kotlinx.serialization.json.buildJsonObject import kotlinx.serialization.json.put +import okhttp3.HttpUrl +import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaType import okhttp3.Request import okhttp3.RequestBody.Companion.toRequestBody @@ -42,6 +44,7 @@ class ReadMangas() : HttpSource() { override val supportsLatest = true override val client = network.cloudflareClient.newBuilder() + .addInterceptor(::mangaSlugCompatibility) .build() override val versionId = 2 @@ -252,6 +255,34 @@ class ReadMangas() : HttpSource() { // =========================== Utilities =============================== + private fun mangaSlugCompatibility(chain: Interceptor.Chain): Response { + val request = chain.request() + if (request.url.fragment.isNullOrBlank()) { + return chain.proceed(request) + } + + val response = chain.proceed(request) + if (response.isSuccessful) { + return response + } + + response.close() + + val url = request.url.newBuilder() + .dropLastPathSegment() + .addPathSegment(request.url.fragment!!) + .build() + + val newRequest = request.newBuilder() + .url(url) + .build() + + return chain.proceed(newRequest) + } + + private fun HttpUrl.Builder.dropLastPathSegment(): HttpUrl.Builder = + this.removePathSegment(this.build().pathSegments.size - 1) + private inline fun Response.mangasPageParse(): Pair { val json = when (request.method) { "GET" -> parseScriptToJson()