diff options
Diffstat (limited to 'cask/src/cask/endpoints/ParamReader.scala')
-rw-r--r-- | cask/src/cask/endpoints/ParamReader.scala | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/cask/src/cask/endpoints/ParamReader.scala b/cask/src/cask/endpoints/ParamReader.scala index f1ec0bf..e43f482 100644 --- a/cask/src/cask/endpoints/ParamReader.scala +++ b/cask/src/cask/endpoints/ParamReader.scala @@ -1,22 +1,28 @@ package cask.endpoints import cask.internal.Router -import cask.model.ParamContext +import cask.model.{Cookie, Request} import io.undertow.server.HttpServerExchange import io.undertow.server.handlers.form.{FormData, FormParserFactory} -abstract class ParamReader[T] extends Router.ArgReader[Unit, T, cask.model.ParamContext]{ +abstract class ParamReader[T] extends Router.ArgReader[Unit, T, cask.model.Request]{ def arity: Int - def read(ctx: cask.model.ParamContext, label: String, v: Unit): T + def read(ctx: cask.model.Request, label: String, v: Unit): T } object ParamReader{ - class NilParam[T](f: (ParamContext, String) => T) extends ParamReader[T]{ + class NilParam[T](f: (Request, String) => T) extends ParamReader[T]{ def arity = 0 - def read(ctx: cask.model.ParamContext, label: String, v: Unit): T = f(ctx, label) + def read(ctx: cask.model.Request, label: String, v: Unit): T = f(ctx, label) } implicit object HttpExchangeParam extends NilParam[HttpServerExchange]((ctx, label) => ctx.exchange) implicit object FormDataParam extends NilParam[FormData]((ctx, label) => FormParserFactory.builder().build().createParser(ctx.exchange).parseBlocking() ) + + implicit object RequestParam extends NilParam[Request]((ctx, label) => ctx) + + implicit object CookieParam extends NilParam[Cookie]((ctx, label) => + Cookie.fromUndertow(ctx.exchange.getRequestCookies().get(label)) + ) } |