Skip to content

Commit 2051015

Browse files
authored
Improve documentation with Http codes (#261)
* Improve documentation dsl with Http codes * Fix plaintext requiring T
1 parent efff68c commit 2051015

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

server/src/main/kotlin/suwayomi/tachidesk/manga/controller/MangaController.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package suwayomi.tachidesk.manga.controller
88
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
99

1010
import io.javalin.http.Context
11+
import io.javalin.http.HttpCode
1112
import suwayomi.tachidesk.manga.impl.CategoryManga
1213
import suwayomi.tachidesk.manga.impl.Chapter
1314
import suwayomi.tachidesk.manga.impl.Library
@@ -40,7 +41,8 @@ object MangaController {
4041
)
4142
},
4243
withResults = {
43-
json<MangaDataClass>("OK")
44+
json<MangaDataClass>(HttpCode.OK)
45+
httpCode(HttpCode.NOT_FOUND)
4446
}
4547
)
4648

server/src/main/kotlin/suwayomi/tachidesk/server/util/DocumentationDsl.kt

+15-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package suwayomi.tachidesk.server.util
22

33
import io.javalin.http.Context
4+
import io.javalin.http.HttpCode
45
import io.javalin.plugin.openapi.dsl.DocumentedHandler
56
import io.javalin.plugin.openapi.dsl.OpenApiDocumentation
67
import io.javalin.plugin.openapi.dsl.documented
@@ -114,19 +115,27 @@ sealed class Param<T> {
114115
class ResultsBuilder {
115116
val results = mutableListOf<ResultType<*>>()
116117

117-
inline fun <reified T> json(status: String) {
118-
results += ResultType.MimeType(status, "application/json", T::class.java)
118+
inline fun <reified T> json(code: HttpCode) {
119+
results += ResultType.MimeType(code, "application/json", T::class.java)
119120
}
120-
inline fun <reified T> plainText(status: String) {
121-
results += ResultType.MimeType(status, "text/plain", String::class.java)
121+
fun plainText(code: HttpCode) {
122+
results += ResultType.MimeType(code, "text/plain", String::class.java)
123+
}
124+
fun httpCode(code: HttpCode) {
125+
results += ResultType.StatusCode(code)
122126
}
123127
}
124128

125129
sealed class ResultType <T> {
126130
abstract fun applyTo(documentation: OpenApiDocumentation)
127-
data class MimeType<T>(val status: String, val mime: String, private val clazz: Class<T>) : ResultType<T>() {
131+
data class MimeType<T>(val code: HttpCode, val mime: String, private val clazz: Class<T>) : ResultType<T>() {
132+
override fun applyTo(documentation: OpenApiDocumentation) {
133+
documentation.result(code.status.toString(), clazz)
134+
}
135+
}
136+
data class StatusCode(val code: HttpCode) : ResultType<Unit>() {
128137
override fun applyTo(documentation: OpenApiDocumentation) {
129-
documentation.result(status, clazz)
138+
documentation.result<Unit>(code.status.toString())
130139
}
131140
}
132141
}

0 commit comments

Comments
 (0)