Skip to content

Commit 33a2617

Browse files
committed
feat(model-server): use openapi resources in KeyValueLikeModelServer
1 parent eefe8a1 commit 33a2617

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

model-server/src/main/kotlin/org/modelix/model/server/handlers/KeyValueLikeModelServer.kt

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ import io.ktor.server.application.ApplicationCall
2121
import io.ktor.server.application.call
2222
import io.ktor.server.html.respondHtmlTemplate
2323
import io.ktor.server.request.receiveText
24+
import io.ktor.server.resources.get
25+
import io.ktor.server.resources.post
26+
import io.ktor.server.resources.put
2427
import io.ktor.server.response.respondText
25-
import io.ktor.server.routing.get
26-
import io.ktor.server.routing.post
27-
import io.ktor.server.routing.put
2828
import io.ktor.server.routing.routing
2929
import io.ktor.util.pipeline.PipelineContext
3030
import kotlinx.html.br
@@ -33,6 +33,7 @@ import kotlinx.html.h1
3333
import kotlinx.html.span
3434
import org.json.JSONArray
3535
import org.json.JSONObject
36+
import org.modelix.Paths
3637
import org.modelix.authorization.EPermissionType
3738
import org.modelix.authorization.KeycloakResourceType
3839
import org.modelix.authorization.KeycloakScope
@@ -82,14 +83,14 @@ class KeyValueLikeModelServer(val repositoriesManager: RepositoriesManager) {
8283

8384
private fun Application.modelServerModule() {
8485
routing {
85-
get("/health") {
86+
get<Paths.healthGet> {
8687
if (isHealthy()) {
8788
call.respondText(text = "healthy", contentType = ContentType.Text.Plain, status = HttpStatusCode.OK)
8889
} else {
8990
call.respondText(text = "not healthy", contentType = ContentType.Text.Plain, status = HttpStatusCode.InternalServerError)
9091
}
9192
}
92-
get("/headers") {
93+
get<Paths.headersGet> {
9394
val headers = call.request.headers.entries().flatMap { e -> e.value.map { e.key to it } }
9495
call.respondHtmlTemplate(PageWithMenuBar("headers", ".")) {
9596
bodyContent {
@@ -106,38 +107,36 @@ class KeyValueLikeModelServer(val repositoriesManager: RepositoriesManager) {
106107
}
107108
}
108109
requiresPermission(PERMISSION_MODEL_SERVER, EPermissionType.READ) {
109-
get("/get/{key}") {
110+
get<Paths.getKeyGet> {
110111
val key = call.parameters["key"]!!
111112
checkKeyPermission(key, EPermissionType.READ)
112113
val value = storeClient[key]
113114
respondValue(key, value)
114115
}
115-
116-
get("/poll/{key}") {
116+
get<Paths.pollKeyGet> {
117117
val key: String = call.parameters["key"]!!
118118
val lastKnownValue = call.request.queryParameters["lastKnownValue"]
119119
checkKeyPermission(key, EPermissionType.READ)
120120
val newValue = pollEntry(storeClient, key, lastKnownValue)
121121
respondValue(key, newValue)
122122
}
123123

124-
get("/getEmail") {
124+
get<Paths.getEmailGet> {
125125
call.respondText(call.getUserName() ?: "<no email>")
126126
}
127-
128-
post("/counter/{key}") {
127+
post<Paths.counterKeyPost> {
129128
val key = call.parameters["key"]!!
130129
checkKeyPermission(key, EPermissionType.WRITE)
131130
val value = storeClient.generateId(key)
132131
call.respondText(text = value.toString())
133132
}
134133

135-
get("/getRecursively/{key}") {
134+
get<Paths.getRecursivelyKeyGet> {
136135
val key = call.parameters["key"]!!
137136
call.respondText(collect(key).toString(2), contentType = ContentType.Application.Json)
138137
}
139138

140-
put("/put/{key}") {
139+
put<Paths.putKeyPut> {
141140
val key = call.parameters["key"]!!
142141
val value = call.receiveText()
143142
try {
@@ -148,7 +147,7 @@ class KeyValueLikeModelServer(val repositoriesManager: RepositoriesManager) {
148147
}
149148
}
150149

151-
put("/putAll") {
150+
put<Paths.putAllPut> {
152151
val jsonStr = call.receiveText()
153152
val json = JSONArray(jsonStr)
154153
var entries: MutableMap<String, String?> = LinkedHashMap()
@@ -167,7 +166,7 @@ class KeyValueLikeModelServer(val repositoriesManager: RepositoriesManager) {
167166
}
168167
}
169168

170-
put("/getAll") {
169+
put<Paths.getAllPut> {
171170
// PUT is used, because a GET is not allowed to have a request body that changes the result of the
172171
// request. It would be legal for an HTTP proxy to cache all /getAll requests and ignore the body.
173172
val reqJsonStr = call.receiveText()

0 commit comments

Comments
 (0)