diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-08-13 15:00:14 +0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-08-13 15:25:11 +0800 |
commit | a873d77fbeb4590dceeb893ab067beb9058db241 (patch) | |
tree | 3132f93c3f78206ad3ca7af8dd7f04a116c216ed /cask | |
parent | 3ff5a5079080de524375cd43425c1515bf128274 (diff) | |
download | cask-a873d77fbeb4590dceeb893ab067beb9058db241.tar.gz cask-a873d77fbeb4590dceeb893ab067beb9058db241.tar.bz2 cask-a873d77fbeb4590dceeb893ab067beb9058db241.zip |
Tweak websocket tests, example and docs
Diffstat (limited to 'cask')
-rw-r--r-- | cask/src/cask/endpoints/FormEndpoint.scala | 2 | ||||
-rw-r--r-- | cask/src/cask/endpoints/JsonEndpoint.scala | 2 | ||||
-rw-r--r-- | cask/src/cask/endpoints/StaticEndpoints.scala | 7 | ||||
-rw-r--r-- | cask/src/cask/main/Main.scala | 19 |
4 files changed, 14 insertions, 16 deletions
diff --git a/cask/src/cask/endpoints/FormEndpoint.scala b/cask/src/cask/endpoints/FormEndpoint.scala index eb882fa..a952a2a 100644 --- a/cask/src/cask/endpoints/FormEndpoint.scala +++ b/cask/src/cask/endpoints/FormEndpoint.scala @@ -43,7 +43,7 @@ object FormReader{ def read(ctx: ParamContext, label: String, input: Seq[FormEntry]) = input.map(_.asInstanceOf[FormFile]) } } -class postForm(val path: String, override val subpath: Boolean = false) extends Endpoint with HttpDecorator{ +class postForm(val path: String, override val subpath: Boolean = false) extends Endpoint { type Output = Response val methods = Seq("post") diff --git a/cask/src/cask/endpoints/JsonEndpoint.scala b/cask/src/cask/endpoints/JsonEndpoint.scala index f3b0cae..f91b888 100644 --- a/cask/src/cask/endpoints/JsonEndpoint.scala +++ b/cask/src/cask/endpoints/JsonEndpoint.scala @@ -26,7 +26,7 @@ object JsReader{ } } } -class postJson(val path: String, override val subpath: Boolean = false) extends Endpoint with HttpDecorator{ +class postJson(val path: String, override val subpath: Boolean = false) extends Endpoint{ type Output = Response val methods = Seq("post") type Input = ujson.Js.Value diff --git a/cask/src/cask/endpoints/StaticEndpoints.scala b/cask/src/cask/endpoints/StaticEndpoints.scala index a9b3193..726af21 100644 --- a/cask/src/cask/endpoints/StaticEndpoints.scala +++ b/cask/src/cask/endpoints/StaticEndpoints.scala @@ -1,10 +1,9 @@ package cask.endpoints -import cask.internal.Router -import cask.main.{Endpoint, HttpDecorator} -import cask.model.{ParamContext, Response} +import cask.main.Endpoint +import cask.model.ParamContext -class static(val path: String) extends Endpoint with HttpDecorator{ +class static(val path: String) extends Endpoint{ type Output = String val methods = Seq("get") type Input = Seq[String] diff --git a/cask/src/cask/main/Main.scala b/cask/src/cask/main/Main.scala index 94d0e14..1b69597 100644 --- a/cask/src/cask/main/Main.scala +++ b/cask/src/cask/main/Main.scala @@ -53,8 +53,8 @@ abstract class BaseMain{ ) } - def genericWebsocketHandler(exchange0: HttpServerExchange) = - hello(exchange0, "websocket", ParamContext(exchange0, _), exchange0.getRequestPath).foreach{ r => + def websocketEndpointHandler(exchange0: HttpServerExchange) = + invokeEndpointFunction(exchange0, "websocket", exchange0.getRequestPath).foreach{ r => r.asInstanceOf[WebsocketResult] match{ case l: WebsocketResult.Listener => io.undertow.Handlers.websocket(l.value).handleRequest(exchange0) @@ -67,10 +67,9 @@ abstract class BaseMain{ new HttpHandler() { def handleRequest(exchange: HttpServerExchange): Unit = { if (exchange.getRequestHeaders.getFirst("Upgrade") == "websocket") { - - genericWebsocketHandler(exchange) + websocketEndpointHandler(exchange) } else { - defaultHttpHandler.handleRequest(exchange) + httpEndpointHandler.handleRequest(exchange) } } } @@ -82,24 +81,24 @@ abstract class BaseMain{ } } ) - def defaultHttpHandler = new BlockingHandler( + + def httpEndpointHandler = new BlockingHandler( new HttpHandler() { def handleRequest(exchange: HttpServerExchange) = { - hello(exchange, exchange.getRequestMethod.toString.toLowerCase(), ParamContext(exchange, _), exchange.getRequestPath).foreach{ r => + invokeEndpointFunction(exchange, exchange.getRequestMethod.toString.toLowerCase(), exchange.getRequestPath).foreach{ r => writeResponse(exchange, r.asInstanceOf[Response]) } } } ) - def hello(exchange0: HttpServerExchange, effectiveMethod: String, ctx0: Seq[String] => ParamContext, path: String) = { + def invokeEndpointFunction(exchange0: HttpServerExchange, effectiveMethod: String, path: String) = { routeTries(effectiveMethod).lookup(Util.splitPath(path).toList, Map()) match{ case None => writeResponse(exchange0, handleNotFound()) None case Some(((routes, metadata), extBindings, remaining)) => val ctx = ParamContext(exchange0, remaining) - val ctx1 = ctx0(remaining) def rec(remaining: List[Decorator], bindings: List[Map[String, Any]]): Router.Result[Any] = try { remaining match { @@ -110,7 +109,7 @@ abstract class BaseMain{ metadata.endpoint.wrapFunction(ctx, epBindings => metadata.entryPoint .asInstanceOf[EntryPoint[cask.main.Routes, cask.model.ParamContext]] - .invoke(routes, ctx1, (epBindings ++ extBindings.mapValues(metadata.endpoint.wrapPathSegment)) :: bindings.reverse) + .invoke(routes, ctx, (epBindings ++ extBindings.mapValues(metadata.endpoint.wrapPathSegment)) :: bindings.reverse) .asInstanceOf[Router.Result[Nothing]] ) } |