summaryrefslogtreecommitdiff
path: root/cask/src/cask/endpoints/WebEndpoints.scala
diff options
context:
space:
mode:
Diffstat (limited to 'cask/src/cask/endpoints/WebEndpoints.scala')
-rw-r--r--cask/src/cask/endpoints/WebEndpoints.scala18
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")