janvladimirmostert
05/03/2017, 6:51 PMfun Router.blockingPost(url: String, handler: KFunction1<@ParameterName(name = "request") RestRequest, RestResponse>) {
<http://this.post|this.post>(url).handler { rtx ->
// extract cookies
val cookies = mutableMapOf<String, String>()
rtx.cookies().forEach { cookie ->
cookies.put(key = cookie.name, value = cookie.value)
}
// extract body
rtx.request().bodyHandler { btx ->
rtx.vertx().executeBlocking<RestResponse>({
val response = handler.invoke(RestRequest(
cookies = cookies,
routingContext = rtx,
json = String(btx.bytes)))
it.complete(response)
}, {
val response = it.result()
if (it.succeeded()) {
if (response.json.isNotBlank()) {
rtx.response().setStatusCode(200).end(response.json)
}
} else {
RestEasy.log.error(it.cause().message, it.cause())
rtx.response().setStatusCode(500).end(it.cause().message)
}
})
}
}
}