From 6d88d90659229f32a03c5bd6ee645bbf76ea5592 Mon Sep 17 00:00:00 2001 From: Anurag Date: Fri, 28 Oct 2022 16:34:22 +0530 Subject: [PATCH] Fix: Error handling for popular/latest api if pageNum was supplied as zero (#424) * fix: handle and throw proper error if pageNum is zero for popular/latest api, fixes #75 * chore: replace if-else with kotlin require which throws IllegalArgumentException and add comment * fix: remove comment as exception message is enough --- .../main/kotlin/suwayomi/tachidesk/manga/impl/MangaList.kt | 3 +++ .../main/kotlin/suwayomi/tachidesk/server/JavalinSetup.kt | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/MangaList.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/MangaList.kt index 1bea6eec..7f19b2c4 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/MangaList.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/impl/MangaList.kt @@ -27,6 +27,9 @@ object MangaList { } suspend fun getMangaList(sourceId: Long, pageNum: Int = 1, popular: Boolean): PagedMangaListDataClass { + require(pageNum > 0) { + "pageNum = $pageNum is not in valid range" + } val source = getCatalogueSourceOrStub(sourceId) val mangasPage = if (popular) { source.fetchPopularManga(pageNum).awaitSingle() diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/JavalinSetup.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/JavalinSetup.kt index 4d943345..7ccce731 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/JavalinSetup.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/JavalinSetup.kt @@ -28,6 +28,7 @@ import suwayomi.tachidesk.manga.MangaAPI import suwayomi.tachidesk.server.util.Browser import suwayomi.tachidesk.server.util.setupWebInterface import java.io.IOException +import java.lang.IllegalArgumentException import java.util.concurrent.CompletableFuture import kotlin.concurrent.thread @@ -97,6 +98,12 @@ object JavalinSetup { ctx.result(e.message ?: "Internal Server Error") } + app.exception(IllegalArgumentException::class.java) { e, ctx -> + logger.error("IllegalArgumentException while handling the request", e) + ctx.status(400) + ctx.result(e.message ?: "Bad Request") + } + app.routes { path("api/v1/") { GlobalAPI.defineEndpoints()