@@ -21,10 +21,10 @@ import io.ktor.server.application.ApplicationCall
21
21
import io.ktor.server.application.call
22
22
import io.ktor.server.html.respondHtmlTemplate
23
23
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
24
27
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
28
28
import io.ktor.server.routing.routing
29
29
import io.ktor.util.pipeline.PipelineContext
30
30
import kotlinx.html.br
@@ -33,6 +33,7 @@ import kotlinx.html.h1
33
33
import kotlinx.html.span
34
34
import org.json.JSONArray
35
35
import org.json.JSONObject
36
+ import org.modelix.Paths
36
37
import org.modelix.authorization.EPermissionType
37
38
import org.modelix.authorization.KeycloakResourceType
38
39
import org.modelix.authorization.KeycloakScope
@@ -82,14 +83,14 @@ class KeyValueLikeModelServer(val repositoriesManager: RepositoriesManager) {
82
83
83
84
private fun Application.modelServerModule () {
84
85
routing {
85
- get( " /health " ) {
86
+ get< Paths .healthGet> {
86
87
if (isHealthy()) {
87
88
call.respondText(text = " healthy" , contentType = ContentType .Text .Plain , status = HttpStatusCode .OK )
88
89
} else {
89
90
call.respondText(text = " not healthy" , contentType = ContentType .Text .Plain , status = HttpStatusCode .InternalServerError )
90
91
}
91
92
}
92
- get( " /headers " ) {
93
+ get< Paths .headersGet> {
93
94
val headers = call.request.headers.entries().flatMap { e -> e.value.map { e.key to it } }
94
95
call.respondHtmlTemplate(PageWithMenuBar (" headers" , " ." )) {
95
96
bodyContent {
@@ -106,38 +107,36 @@ class KeyValueLikeModelServer(val repositoriesManager: RepositoriesManager) {
106
107
}
107
108
}
108
109
requiresPermission(PERMISSION_MODEL_SERVER , EPermissionType .READ ) {
109
- get( " /get/{key} " ) {
110
+ get< Paths .getKeyGet> {
110
111
val key = call.parameters[" key" ]!!
111
112
checkKeyPermission(key, EPermissionType .READ )
112
113
val value = storeClient[key]
113
114
respondValue(key, value)
114
115
}
115
-
116
- get(" /poll/{key}" ) {
116
+ get<Paths .pollKeyGet> {
117
117
val key: String = call.parameters[" key" ]!!
118
118
val lastKnownValue = call.request.queryParameters[" lastKnownValue" ]
119
119
checkKeyPermission(key, EPermissionType .READ )
120
120
val newValue = pollEntry(storeClient, key, lastKnownValue)
121
121
respondValue(key, newValue)
122
122
}
123
123
124
- get( " /getEmail " ) {
124
+ get< Paths .getEmailGet> {
125
125
call.respondText(call.getUserName() ? : " <no email>" )
126
126
}
127
-
128
- post(" /counter/{key}" ) {
127
+ post<Paths .counterKeyPost> {
129
128
val key = call.parameters[" key" ]!!
130
129
checkKeyPermission(key, EPermissionType .WRITE )
131
130
val value = storeClient.generateId(key)
132
131
call.respondText(text = value.toString())
133
132
}
134
133
135
- get( " /getRecursively/{key} " ) {
134
+ get< Paths .getRecursivelyKeyGet> {
136
135
val key = call.parameters[" key" ]!!
137
136
call.respondText(collect(key).toString(2 ), contentType = ContentType .Application .Json )
138
137
}
139
138
140
- put( " /put/{key} " ) {
139
+ put< Paths .putKeyPut> {
141
140
val key = call.parameters[" key" ]!!
142
141
val value = call.receiveText()
143
142
try {
@@ -148,7 +147,7 @@ class KeyValueLikeModelServer(val repositoriesManager: RepositoriesManager) {
148
147
}
149
148
}
150
149
151
- put( " /putAll " ) {
150
+ put< Paths .putAllPut> {
152
151
val jsonStr = call.receiveText()
153
152
val json = JSONArray (jsonStr)
154
153
var entries: MutableMap <String , String ?> = LinkedHashMap ()
@@ -167,7 +166,7 @@ class KeyValueLikeModelServer(val repositoriesManager: RepositoriesManager) {
167
166
}
168
167
}
169
168
170
- put( " /getAll " ) {
169
+ put< Paths .getAllPut> {
171
170
// PUT is used, because a GET is not allowed to have a request body that changes the result of the
172
171
// request. It would be legal for an HTTP proxy to cache all /getAll requests and ignore the body.
173
172
val reqJsonStr = call.receiveText()
0 commit comments