mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-04 03:14:40 -05:00
Improve documentation with Http codes (#261)
* Improve documentation dsl with Http codes * Fix plaintext requiring T
This commit is contained in:
@@ -8,6 +8,7 @@ package suwayomi.tachidesk.manga.controller
|
|||||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
import io.javalin.http.Context
|
import io.javalin.http.Context
|
||||||
|
import io.javalin.http.HttpCode
|
||||||
import suwayomi.tachidesk.manga.impl.CategoryManga
|
import suwayomi.tachidesk.manga.impl.CategoryManga
|
||||||
import suwayomi.tachidesk.manga.impl.Chapter
|
import suwayomi.tachidesk.manga.impl.Chapter
|
||||||
import suwayomi.tachidesk.manga.impl.Library
|
import suwayomi.tachidesk.manga.impl.Library
|
||||||
@@ -40,7 +41,8 @@ object MangaController {
|
|||||||
)
|
)
|
||||||
},
|
},
|
||||||
withResults = {
|
withResults = {
|
||||||
json<MangaDataClass>("OK")
|
json<MangaDataClass>(HttpCode.OK)
|
||||||
|
httpCode(HttpCode.NOT_FOUND)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package suwayomi.tachidesk.server.util
|
package suwayomi.tachidesk.server.util
|
||||||
|
|
||||||
import io.javalin.http.Context
|
import io.javalin.http.Context
|
||||||
|
import io.javalin.http.HttpCode
|
||||||
import io.javalin.plugin.openapi.dsl.DocumentedHandler
|
import io.javalin.plugin.openapi.dsl.DocumentedHandler
|
||||||
import io.javalin.plugin.openapi.dsl.OpenApiDocumentation
|
import io.javalin.plugin.openapi.dsl.OpenApiDocumentation
|
||||||
import io.javalin.plugin.openapi.dsl.documented
|
import io.javalin.plugin.openapi.dsl.documented
|
||||||
@@ -114,19 +115,27 @@ sealed class Param<T> {
|
|||||||
class ResultsBuilder {
|
class ResultsBuilder {
|
||||||
val results = mutableListOf<ResultType<*>>()
|
val results = mutableListOf<ResultType<*>>()
|
||||||
|
|
||||||
inline fun <reified T> json(status: String) {
|
inline fun <reified T> json(code: HttpCode) {
|
||||||
results += ResultType.MimeType(status, "application/json", T::class.java)
|
results += ResultType.MimeType(code, "application/json", T::class.java)
|
||||||
}
|
}
|
||||||
inline fun <reified T> plainText(status: String) {
|
fun plainText(code: HttpCode) {
|
||||||
results += ResultType.MimeType(status, "text/plain", String::class.java)
|
results += ResultType.MimeType(code, "text/plain", String::class.java)
|
||||||
|
}
|
||||||
|
fun httpCode(code: HttpCode) {
|
||||||
|
results += ResultType.StatusCode(code)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class ResultType <T> {
|
sealed class ResultType <T> {
|
||||||
abstract fun applyTo(documentation: OpenApiDocumentation)
|
abstract fun applyTo(documentation: OpenApiDocumentation)
|
||||||
data class MimeType<T>(val status: String, val mime: String, private val clazz: Class<T>) : ResultType<T>() {
|
data class MimeType<T>(val code: HttpCode, val mime: String, private val clazz: Class<T>) : ResultType<T>() {
|
||||||
override fun applyTo(documentation: OpenApiDocumentation) {
|
override fun applyTo(documentation: OpenApiDocumentation) {
|
||||||
documentation.result(status, clazz)
|
documentation.result(code.status.toString(), clazz)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data class StatusCode(val code: HttpCode) : ResultType<Unit>() {
|
||||||
|
override fun applyTo(documentation: OpenApiDocumentation) {
|
||||||
|
documentation.result<Unit>(code.status.toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user