summaryrefslogtreecommitdiff
path: root/cask
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-08-13 15:00:14 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-08-13 15:25:11 +0800
commita873d77fbeb4590dceeb893ab067beb9058db241 (patch)
tree3132f93c3f78206ad3ca7af8dd7f04a116c216ed /cask
parent3ff5a5079080de524375cd43425c1515bf128274 (diff)
downloadcask-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.scala2
-rw-r--r--cask/src/cask/endpoints/JsonEndpoint.scala2
-rw-r--r--cask/src/cask/endpoints/StaticEndpoints.scala7
-rw-r--r--cask/src/cask/main/Main.scala19
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]]
)
}