ReadMangas: Add compatibility with id and slug (#8274)

Add compatibility with id and slug
This commit is contained in:
Chopper 2025-03-31 11:39:08 -03:00 committed by Draff
parent cea3c8a60b
commit 7fcbbec4c7
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
2 changed files with 32 additions and 1 deletions

View File

@ -1,7 +1,7 @@
ext {
extName = 'Read Mangas'
extClass = '.ReadMangas'
extVersionCode = 39
extVersionCode = 40
}
apply from: "$rootDir/common.gradle"

View File

@ -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 <reified T : ResultDto> Response.mangasPageParse(): Pair<MangasPage, String> {
val json = when (request.method) {
"GET" -> parseScriptToJson()