diff options
Diffstat (limited to 'cask/src/cask/endpoints/WebEndpoints.scala')
-rw-r--r-- | cask/src/cask/endpoints/WebEndpoints.scala | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/cask/src/cask/endpoints/WebEndpoints.scala b/cask/src/cask/endpoints/WebEndpoints.scala index ab3b480..8bb3bae 100644 --- a/cask/src/cask/endpoints/WebEndpoints.scala +++ b/cask/src/cask/endpoints/WebEndpoints.scala @@ -1,19 +1,22 @@ package cask.endpoints import cask.internal.Router -import cask.main.Endpoint +import cask.main.HttpEndpoint import cask.model.{Request, Response} import collection.JavaConverters._ -trait WebEndpoint extends Endpoint{ - type Output = Response - type Input = Seq[String] +trait WebEndpoint extends HttpEndpoint[Response.Raw, Seq[String]]{ type InputParser[T] = QueryParamReader[T] def wrapFunction(ctx: Request, - delegate: Map[String, Input] => Router.Result[Output]): Router.Result[Response] = { - + delegate: Delegate): Router.Result[Response.Raw] = { + delegate(WebEndpoint.buildMapFromQueryParams(ctx)) + } + def wrapPathSegment(s: String) = Seq(s) +} +object WebEndpoint{ + def buildMapFromQueryParams(ctx: Request) = { val b = Map.newBuilder[String, Seq[String]] val queryParams = ctx.exchange.getQueryParameters for(k <- queryParams.keySet().iterator().asScala){ @@ -22,9 +25,8 @@ trait WebEndpoint extends Endpoint{ deque.toArray(arr) b += (k -> (arr: Seq[String])) } - delegate(b.result()) + b.result() } - def wrapPathSegment(s: String) = Seq(s) } class get(val path: String, override val subpath: Boolean = false) extends WebEndpoint{ val methods = Seq("get") |