summaryrefslogtreecommitdiff
path: root/cask
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-07-25 17:02:16 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-07-25 17:10:40 +0800
commitbafd0bb41ee9728ec908b730ebe4f9d69178fd4a (patch)
tree479dfa8fc342aea3a40811686669b996b6948c8d /cask
parent8a7a665f3d6cd386e57a55dcb003d25b76b14138 (diff)
downloadcask-bafd0bb41ee9728ec908b730ebe4f9d69178fd4a.tar.gz
cask-bafd0bb41ee9728ec908b730ebe4f9d69178fd4a.tar.bz2
cask-bafd0bb41ee9728ec908b730ebe4f9d69178fd4a.zip
Enforce `com.lihaoyi:acyclic` on the Cask codebase
Diffstat (limited to 'cask')
-rw-r--r--cask/src/cask/endpoints/Endpoint.scala18
-rw-r--r--cask/src/cask/endpoints/FormEndpoint.scala6
-rw-r--r--cask/src/cask/endpoints/JsonEndpoint.scala2
-rw-r--r--cask/src/cask/endpoints/ParamReader.scala8
-rw-r--r--cask/src/cask/endpoints/StaticEndpoints.scala2
-rw-r--r--cask/src/cask/endpoints/WebEndpoints.scala2
-rw-r--r--cask/src/cask/main/Main.scala3
-rw-r--r--cask/src/cask/main/Routes.scala17
-rw-r--r--cask/test/src/test/cask/Cookies.scala2
-rw-r--r--cask/test/src/test/cask/MultipartFileUploads.scala (renamed from cask/test/src/test/cask/FileUploads.scala)2
10 files changed, 27 insertions, 35 deletions
diff --git a/cask/src/cask/endpoints/Endpoint.scala b/cask/src/cask/endpoints/Endpoint.scala
deleted file mode 100644
index d30f537..0000000
--- a/cask/src/cask/endpoints/Endpoint.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-package cask.endpoints
-
-import cask.internal.Router
-import cask.internal.Router.EntryPoint
-import cask.main.Routes
-import cask.model.{BaseResponse, ParamContext}
-import io.undertow.server.HttpServerExchange
-
-trait Endpoint[R]{
- type InputType
- val path: String
- def subpath: Boolean = false
- def wrapMethodOutput(t: R): Any
- def handle(ctx: ParamContext,
- bindings: Map[String, String],
- routes: Routes,
- entryPoint: EntryPoint[InputType, Routes, cask.model.ParamContext]): Router.Result[BaseResponse]
-} \ No newline at end of file
diff --git a/cask/src/cask/endpoints/FormEndpoint.scala b/cask/src/cask/endpoints/FormEndpoint.scala
index e4b28f4..55614b2 100644
--- a/cask/src/cask/endpoints/FormEndpoint.scala
+++ b/cask/src/cask/endpoints/FormEndpoint.scala
@@ -1,11 +1,12 @@
package cask.endpoints
+import cask.endpoints.ParamReader.NilParam
import cask.internal.Router.EntryPoint
import cask.internal.Router
import cask.main.Routes
import cask.model.{ParamContext, Response}
import io.undertow.server.HttpServerExchange
-import io.undertow.server.handlers.form.FormParserFactory
+import io.undertow.server.handlers.form.{FormData, FormParserFactory}
import collection.JavaConverters._
@@ -18,6 +19,7 @@ object FormReader{
implicitly[QueryParamReader[T]].read(ctx, label, input.map(_.value))
}
}
+
implicit def formValueReader = new FormReader[FormValue]{
def arity = 1
def read(ctx: ParamContext, label: String, input: Seq[FormValue]) = input.head
@@ -35,7 +37,7 @@ object FormReader{
def read(ctx: ParamContext, label: String, input: Seq[FormValue]) = input.map(_.asFile.get)
}
}
-class postForm(val path: String, override val subpath: Boolean = false) extends Endpoint[Response]{
+class postForm(val path: String, override val subpath: Boolean = false) extends Routes.Endpoint[Response]{
type InputType = Seq[FormValue]
def wrapMethodOutput(t: Response) = t
def parseMethodInput[T](implicit p: FormReader[T]) = p
diff --git a/cask/src/cask/endpoints/JsonEndpoint.scala b/cask/src/cask/endpoints/JsonEndpoint.scala
index 9ab2f90..68a66e6 100644
--- a/cask/src/cask/endpoints/JsonEndpoint.scala
+++ b/cask/src/cask/endpoints/JsonEndpoint.scala
@@ -25,7 +25,7 @@ object JsReader{
}
}
}
-class postJson(val path: String, override val subpath: Boolean = false) extends Endpoint[Response]{
+class postJson(val path: String, override val subpath: Boolean = false) extends Routes.Endpoint[Response]{
type InputType = ujson.Js.Value
def wrapMethodOutput(t: Response) = t
def parseMethodInput[T](implicit p: JsReader[T]) = p
diff --git a/cask/src/cask/endpoints/ParamReader.scala b/cask/src/cask/endpoints/ParamReader.scala
index f623005..f1ec0bf 100644
--- a/cask/src/cask/endpoints/ParamReader.scala
+++ b/cask/src/cask/endpoints/ParamReader.scala
@@ -1,20 +1,18 @@
package cask.endpoints
-import cask.Cookie
import cask.internal.Router
import cask.model.ParamContext
import io.undertow.server.HttpServerExchange
import io.undertow.server.handlers.form.{FormData, FormParserFactory}
-abstract class ParamReader[T]
- extends Router.ArgReader[Seq[String], T, cask.model.ParamContext]{
+abstract class ParamReader[T] extends Router.ArgReader[Unit, T, cask.model.ParamContext]{
def arity: Int
- def read(ctx: cask.model.ParamContext, label: String, v: Seq[String]): T
+ def read(ctx: cask.model.ParamContext, label: String, v: Unit): T
}
object ParamReader{
class NilParam[T](f: (ParamContext, String) => T) extends ParamReader[T]{
def arity = 0
- def read(ctx: cask.model.ParamContext, label: String, v: Seq[String]): T = f(ctx, label)
+ def read(ctx: cask.model.ParamContext, label: String, v: Unit): T = f(ctx, label)
}
implicit object HttpExchangeParam extends NilParam[HttpServerExchange]((ctx, label) => ctx.exchange)
diff --git a/cask/src/cask/endpoints/StaticEndpoints.scala b/cask/src/cask/endpoints/StaticEndpoints.scala
index 7302bbe..32d499b 100644
--- a/cask/src/cask/endpoints/StaticEndpoints.scala
+++ b/cask/src/cask/endpoints/StaticEndpoints.scala
@@ -6,7 +6,7 @@ import cask.main.Routes
import cask.model.{BaseResponse, ParamContext}
import io.undertow.server.HttpServerExchange
-class static(val path: String) extends Endpoint[String] {
+class static(val path: String) extends Routes.Endpoint[String] {
type InputType = Seq[String]
override def subpath = true
def wrapOutput(t: String) = t
diff --git a/cask/src/cask/endpoints/WebEndpoints.scala b/cask/src/cask/endpoints/WebEndpoints.scala
index e2f7b67..ed93c6c 100644
--- a/cask/src/cask/endpoints/WebEndpoints.scala
+++ b/cask/src/cask/endpoints/WebEndpoints.scala
@@ -8,7 +8,7 @@ import cask.model.{BaseResponse, ParamContext}
import collection.JavaConverters._
-trait WebEndpoint extends Endpoint[BaseResponse]{
+trait WebEndpoint extends Routes.Endpoint[BaseResponse]{
type InputType = Seq[String]
def wrapMethodOutput(t: BaseResponse) = t
def parseMethodInput[T](implicit p: QueryParamReader[T]) = p
diff --git a/cask/src/cask/main/Main.scala b/cask/src/cask/main/Main.scala
index 28c7770..ac2d8dc 100644
--- a/cask/src/cask/main/Main.scala
+++ b/cask/src/cask/main/Main.scala
@@ -1,7 +1,6 @@
package cask.main
import cask.model.{BaseResponse, ParamContext, Response, Status}
-import cask.Cookie
import cask.internal.Router.EntryPoint
import cask.internal.{DispatchTrie, Router, Util}
import io.undertow.Undertow
@@ -42,7 +41,7 @@ abstract class BaseMain{
response.headers.foreach{case (k, v) =>
exchange.getResponseHeaders.put(new HttpString(k), v)
}
- response.cookies.foreach(c => exchange.setResponseCookie(Cookie.toUndertow(c)))
+ response.cookies.foreach(c => exchange.setResponseCookie(cask.endpoints.Cookie.toUndertow(c)))
exchange.setStatusCode(response.statusCode)
response.data.write(exchange.getOutputStream)
diff --git a/cask/src/cask/main/Routes.scala b/cask/src/cask/main/Routes.scala
index d3c060b..33964fa 100644
--- a/cask/src/cask/main/Routes.scala
+++ b/cask/src/cask/main/Routes.scala
@@ -1,14 +1,25 @@
package cask.main
-import cask.endpoints.Endpoint
+import cask.internal.Router
import cask.internal.Router.EntryPoint
-import cask.model.ParamContext
-import io.undertow.server.HttpServerExchange
+import cask.model.{BaseResponse, ParamContext}
import scala.reflect.macros.blackbox.Context
import language.experimental.macros
object Routes{
+
+ trait Endpoint[R]{
+ type InputType
+ val path: String
+ def subpath: Boolean = false
+ def wrapMethodOutput(t: R): Any
+ def handle(ctx: ParamContext,
+ bindings: Map[String, String],
+ routes: Routes,
+ entryPoint: EntryPoint[InputType, Routes, cask.model.ParamContext]): Router.Result[BaseResponse]
+ }
+
case class EndpointMetadata[T](metadata: Endpoint[_],
entryPoint: EntryPoint[_, T, ParamContext])
case class RoutesEndpointsMetadata[T](value: EndpointMetadata[T]*)
diff --git a/cask/test/src/test/cask/Cookies.scala b/cask/test/src/test/cask/Cookies.scala
index cc64e5d..ba9edce 100644
--- a/cask/test/src/test/cask/Cookies.scala
+++ b/cask/test/src/test/cask/Cookies.scala
@@ -18,7 +18,7 @@ object Cookies extends cask.MainRoutes{
def deleteCookie() = {
cask.Response(
"Cookies Deleted!",
- cookies = Seq(cask.Cookie("username", "the username", expires = java.time.Instant.EPOCH))
+ cookies = Seq(cask.Cookie("username", "", expires = java.time.Instant.EPOCH))
)
}
diff --git a/cask/test/src/test/cask/FileUploads.scala b/cask/test/src/test/cask/MultipartFileUploads.scala
index e56be2d..f6e836e 100644
--- a/cask/test/src/test/cask/FileUploads.scala
+++ b/cask/test/src/test/cask/MultipartFileUploads.scala
@@ -3,7 +3,7 @@ package test.cask
import io.undertow.server.HttpServerExchange
import io.undertow.server.handlers.form.FormData
-object FileUploads extends cask.MainRoutes{
+object MultipartFileUploads extends cask.MainRoutes{
// curl -F "image=@build.sc" localhost:8080/upload
@cask.post("/upload")
def uploadFile(exchange: HttpServerExchange, formData: FormData) = {