AsyncRoutedHttpHandler 添加对协程的支持

This commit is contained in:
tursom 2019-12-14 17:26:49 +08:00
parent 597b94f12d
commit e35ee79a0e

View File

@ -1,6 +1,7 @@
package cn.tursom.web.router package cn.tursom.web.router
import cn.tursom.core.buffer.ByteBuffer import cn.tursom.core.buffer.ByteBuffer
import cn.tursom.core.regex.regex
import cn.tursom.json.JsonWorkerImpl import cn.tursom.json.JsonWorkerImpl
import cn.tursom.web.ExceptionContent import cn.tursom.web.ExceptionContent
import cn.tursom.web.HttpContent import cn.tursom.web.HttpContent
@ -250,10 +251,12 @@ open class RoutedHttpHandler(
return result return result
} }
val slashRegex = regex { (-"/").onceMore }
fun safeRoute(route: String) = ( fun safeRoute(route: String) = (
if (route.startsWith('/')) route else "/$route").let { if (route.startsWith('/')) route else "/$route").let {
if (it.endsWith('/')) it.dropLast(1) else it if (it.endsWith('/')) it.dropLast(1) else it
}.repeatUntil({ it.contains("//") }) { it.replace("//", "/") } }.repeatUntil({ it.contains("//") }) { it.replace(slashRegex, "/") }
fun autoReturn(result: Any, content: HttpContent) { fun autoReturn(result: Any, content: HttpContent) {
log?.debug("{}: autoReturn: {}", content.clientIp, result) log?.debug("{}: autoReturn: {}", content.clientIp, result)