diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-08-09 00:36:25 +0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-08-09 00:36:25 +0800 |
commit | fe17f0a465a49433867ea4917fd4938a7d2b6609 (patch) | |
tree | 04f04f15df5c33325d7da24fad8085587c465895 /cask/src/cask/main | |
parent | b1969928a179bfa833cab528d544a1f77cf24987 (diff) | |
download | cask-fe17f0a465a49433867ea4917fd4938a7d2b6609.tar.gz cask-fe17f0a465a49433867ea4917fd4938a7d2b6609.tar.bz2 cask-fe17f0a465a49433867ea4917fd4938a7d2b6609.zip |
Add `@cask.decorators.compress` utility
Allow for decorators to be applied across `cask.Routes` or `cask.Main`
Diffstat (limited to 'cask/src/cask/main')
-rw-r--r-- | cask/src/cask/main/Decorators.scala | 1 | ||||
-rw-r--r-- | cask/src/cask/main/Main.scala | 3 | ||||
-rw-r--r-- | cask/src/cask/main/Routes.scala | 2 |
3 files changed, 5 insertions, 1 deletions
diff --git a/cask/src/cask/main/Decorators.scala b/cask/src/cask/main/Decorators.scala index 1bd8867..73d8c19 100644 --- a/cask/src/cask/main/Decorators.scala +++ b/cask/src/cask/main/Decorators.scala @@ -75,4 +75,5 @@ class NoOpParser[Input, T] extends ArgReader[Input, T, ParamContext] { } object NoOpParser{ implicit def instance[Input, T] = new NoOpParser[Input, T] + implicit def instanceAny[T] = new NoOpParser[Any, T] }
\ No newline at end of file diff --git a/cask/src/cask/main/Main.scala b/cask/src/cask/main/Main.scala index 5558a08..4a8182b 100644 --- a/cask/src/cask/main/Main.scala +++ b/cask/src/cask/main/Main.scala @@ -15,6 +15,7 @@ class Main(servers0: Routes*) extends BaseMain{ def allRoutes = servers0.toSeq } abstract class BaseMain{ + def mainDecorators = Seq.empty[cask.main.Decorator] def allRoutes: Seq[Routes] val port: Int = 8080 val host: String = "localhost" @@ -77,7 +78,7 @@ abstract class BaseMain{ // delegate throwing on them }catch{case e: Throwable => Router.Result.Error.Exception(e) } - rec(metadata.decorators.toList, Nil)match{ + rec((metadata.decorators ++ routes.decorators ++ mainDecorators).toList, Nil)match{ case Router.Result.Success(response: Response) => writeResponse(exchange, response) case e: Router.Result.Error => diff --git a/cask/src/cask/main/Routes.scala b/cask/src/cask/main/Routes.scala index 0dea657..7b47731 100644 --- a/cask/src/cask/main/Routes.scala +++ b/cask/src/cask/main/Routes.scala @@ -70,6 +70,8 @@ object Routes{ } trait Routes{ + + def decorators = Seq.empty[cask.main.Decorator] private[this] var metadata0: Routes.RoutesEndpointsMetadata[this.type] = null def caskMetadata = if (metadata0 != null) metadata0 |