Add in error handling to handle malformed responses from the aggregate endpoint. addresses #7697 and #7678 (#7709)

This commit is contained in:
animusfracto 2021-06-17 18:18:02 -04:00 committed by GitHub
parent 0fea601ab9
commit 84f2e19495
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 3 deletions

View File

@ -6,7 +6,7 @@ ext {
extName = 'MangaDex'
pkgNameSuffix = 'all.mangadex'
extClass = '.MangaDexFactory'
extVersionCode = 120
extVersionCode = 121
libVersion = '1.2'
containsNsfw = true
}

View File

@ -19,6 +19,7 @@ import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.HttpSource
import kotlinx.serialization.SerializationException
import kotlinx.serialization.decodeFromString
import okhttp3.CacheControl
import okhttp3.Headers
@ -196,9 +197,15 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
* @see AggregateDto
*/
private fun fetchSimpleChapterList(manga: MangaDto, langCode: String): List<String> {
val url = "${MDConstants.apiMangaUrl}/${manga.data.id}/aggregate?translatedLanguage[]=${langCode}"
val url = "${MDConstants.apiMangaUrl}/${manga.data.id}/aggregate?translatedLanguage[]=$langCode"
val response = client.newCall(GET(url, headers)).execute()
val chapters = helper.json.decodeFromString<AggregateDto>(response.body!!.string())
val chapters: AggregateDto
try {
chapters = helper.json.decodeFromString(response.body!!.string())
} catch (e: SerializationException) {
return emptyList()
}
if (chapters.volumes.isNullOrEmpty()) return emptyList()
return chapters.volumes.values.flatMap { it.chapters.values }.map { it.chapter }
}