From 40168836b89740a74d745a007853afb243f2027b Mon Sep 17 00:00:00 2001 From: Chin Yee Wen Date: Mon, 22 Jun 2026 10:53:33 +0800 Subject: [PATCH] Add UnsupportedPagingConfig class --- core/build.gradle.kts | 6 +++++- .../utility/http/response/HttpResponseException.kt | 13 +++++++++++++ .../http/response/MissingPropertyException.kt | 8 ++++++++ .../http/response/UnsupportedPagingConfig.kt | 10 ++++++++++ gradle/libs.versions.toml | 4 +++- 5 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 core/src/main/kotlin/ai/neuon/utility/http/response/HttpResponseException.kt create mode 100644 core/src/main/kotlin/ai/neuon/utility/http/response/MissingPropertyException.kt create mode 100644 core/src/main/kotlin/ai/neuon/utility/http/response/UnsupportedPagingConfig.kt diff --git a/core/build.gradle.kts b/core/build.gradle.kts index b5462eb..5937706 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -1,4 +1,4 @@ -import java.util.Properties +import java.util.* plugins { alias(libs.plugins.dokka) @@ -8,11 +8,15 @@ plugins { repositories { mavenCentral() + maven { + url = uri("https://gitea.neuon-kuching.com/api/packages/neuon-ai/maven") + } } dependencies { implementation(libs.ktor.client) testImplementation(kotlin("test")) + implementation(libs.neuon.paging) } tasks.test { diff --git a/core/src/main/kotlin/ai/neuon/utility/http/response/HttpResponseException.kt b/core/src/main/kotlin/ai/neuon/utility/http/response/HttpResponseException.kt new file mode 100644 index 0000000..b507147 --- /dev/null +++ b/core/src/main/kotlin/ai/neuon/utility/http/response/HttpResponseException.kt @@ -0,0 +1,13 @@ +package ai.neuon.utility.http.response + +import io.ktor.http.* + +/** + * A runtime exception that can be used to stop a request immediately + * with a specific status code. + */ +open class HttpResponseException( + val status: HttpStatusCode, + val statusMessage: String = status.description, + cause: Throwable? = null, +) : RuntimeException(cause) diff --git a/core/src/main/kotlin/ai/neuon/utility/http/response/MissingPropertyException.kt b/core/src/main/kotlin/ai/neuon/utility/http/response/MissingPropertyException.kt new file mode 100644 index 0000000..93a731a --- /dev/null +++ b/core/src/main/kotlin/ai/neuon/utility/http/response/MissingPropertyException.kt @@ -0,0 +1,8 @@ +package ai.neuon.utility.http.response + +import java.util.* + +/** + * A runtime exception that indicates a specific property is not found in a [Properties] + */ +class MissingPropertyException(key: String) : RuntimeException("Missing property `${key}`") diff --git a/core/src/main/kotlin/ai/neuon/utility/http/response/UnsupportedPagingConfig.kt b/core/src/main/kotlin/ai/neuon/utility/http/response/UnsupportedPagingConfig.kt new file mode 100644 index 0000000..1a71a57 --- /dev/null +++ b/core/src/main/kotlin/ai/neuon/utility/http/response/UnsupportedPagingConfig.kt @@ -0,0 +1,10 @@ +package ai.neuon.utility.http.response + +import ai.neuon.utility.paging.PagingRequest +import io.ktor.http.* + +class UnsupportedPagingConfig(supportedTypes: List) : HttpResponseException( + status = HttpStatusCode.BadRequest, + statusMessage = supportedTypes.distinct() + .joinToString { it.key }, +) \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4dad93c..afe9f14 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,12 +2,14 @@ dokka = "2.0.0" ktor = "3.2.0" kotlin = "2.2.0" +neuon-paging = "0.2.0" + [libraries] ktor-client = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor" } +neuon-paging = { module = "ai.neuon.utility:paging", version.ref = "neuon-paging" } [plugins] dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } -ktor = { id = "io.ktor.plugin", version.ref = "ktor" } maven-publish = { id = "maven-publish" }