From 84f2e1949543a2d50163f4d578a03c7f68ec766a Mon Sep 17 00:00:00 2001 From: animusfracto <50589737+animusfracto@users.noreply.github.com> Date: Thu, 17 Jun 2021 18:18:02 -0400 Subject: [PATCH] Add in error handling to handle malformed responses from the aggregate endpoint. addresses #7697 and #7678 (#7709) --- src/all/mangadex/build.gradle | 2 +- .../tachiyomi/extension/all/mangadex/MangaDex.kt | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/all/mangadex/build.gradle b/src/all/mangadex/build.gradle index 12a8af766..c31e0ca25 100644 --- a/src/all/mangadex/build.gradle +++ b/src/all/mangadex/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'MangaDex' pkgNameSuffix = 'all.mangadex' extClass = '.MangaDexFactory' - extVersionCode = 120 + extVersionCode = 121 libVersion = '1.2' containsNsfw = true } diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt index 92bc7ae8f..b394390d4 100644 --- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt +++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt @@ -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 { - 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(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 } }