summaryrefslogtreecommitdiff
path: root/cask/src/cask/main/Routes.scala
diff options
context:
space:
mode:
Diffstat (limited to 'cask/src/cask/main/Routes.scala')
-rw-r--r--cask/src/cask/main/Routes.scala51
1 files changed, 1 insertions, 50 deletions
diff --git a/cask/src/cask/main/Routes.scala b/cask/src/cask/main/Routes.scala
index 60992b5..1c49e42 100644
--- a/cask/src/cask/main/Routes.scala
+++ b/cask/src/cask/main/Routes.scala
@@ -1,61 +1,12 @@
package cask.main
-import cask.internal.Router.{ArgReader, EntryPoint}
+import cask.internal.Router.EntryPoint
import cask.model.ParamContext
import scala.reflect.macros.blackbox.Context
import language.experimental.macros
object Routes{
-
- trait Endpoint[R] extends BaseDecorator{
-
- val path: String
- val methods: Seq[String]
- def subpath: Boolean = false
- def wrapMethodOutput(ctx: ParamContext,t: R): cask.internal.Router.Result[Any] = {
- cask.internal.Router.Result.Success(t)
- }
-
- def wrapPathSegment(s: String): Input
-
- }
-
- /**
- * The core interface of decorator annotations: the decorator provides "raw"
- * values to the annotated function via `getRawParams`, which then get
- * processed by `getParamParser` into the correct argument types before
- * being passed to the function.
- *
- * For a trivial "provide value" decorator, `getRawParams` would return the
- * final param value and `getParamParser` would return a no-op parser. For
- * a decorator that takes its input as query-params, JSON, or similar,
- * `getRawParams` would provide raw query/JSON/etc. values and
- * `getParamParser` would be responsible for processing those into the
- * correct parameter types.
- */
- trait BaseDecorator{
- type Input
- type InputParser[T] <: ArgReader[Input, T, ParamContext]
- def getRawParams(ctx: ParamContext): Either[cask.model.Response, Map[String, Input]]
- def getParamParser[T](implicit p: InputParser[T]) = p
-
- }
-
- trait Decorator extends BaseDecorator {
- type Input = Any
- type InputParser[T] = NoOpParser[Input, T]
- }
-
- class NoOpParser[Input, T] extends ArgReader[Input, T, ParamContext] {
- def arity = 1
-
- def read(ctx: ParamContext, label: String, input: Input) = input.asInstanceOf[T]
- }
- object NoOpParser{
- implicit def instance[Input, T] = new NoOpParser[Input, T]
- }
-
case class EndpointMetadata[T](decorators: Seq[BaseDecorator],
endpoint: Endpoint[_],
entryPoint: EntryPoint[T, ParamContext])