Files
kotlin/examples/src/nettyserver/src/RestProcessor.kt
2012-09-17 18:00:21 +04:00

37 lines
1.1 KiB
Kotlin

package org.jetbrains.kotlin.examples.netty
import org.jboss.netty.handler.codec.http.HttpMethod
import org.jboss.netty.handler.codec.http.HttpResponseStatus
class RestBuilder() {
var onGet : (RequestResponse.()->Any?)? = null
var onPost : (RequestResponse.()->Any?)? = null
fun GET(handler: RequestResponse.()->Unit) {
onGet = handler
}
fun POST(handler: RequestResponse.()->Unit) {
onPost = handler
}
}
class RestProcessor(val prefix: String, val builder: RestBuilder) : Processor {
override fun tryToProcess(request: RequestResponse): Boolean {
if(request.path.startsWith(prefix)) {
if(request.request.getMethod() == HttpMethod.GET && builder.onGet != null) {
request.ok()
request.(builder.onGet!!)()
}
else if(request.request.getMethod() == HttpMethod.POST && builder.onPost != null) {
request.ok()
request.(builder.onPost!!)()
}
else {
request.setError(HttpResponseStatus.METHOD_NOT_ALLOWED)
}
return true;
}
return false
}
}