summaryrefslogtreecommitdiff
path: root/cask
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-08-13 21:11:11 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-08-13 22:13:48 +0800
commite74ade7ac9bfff9239c0243c0fdf01b18d4a0ec3 (patch)
tree9589f3840df5203b60be89efa878d3c2ee678af0 /cask
parentb1d516e2b7df2d881c4dc84840e1cdc475b845b5 (diff)
downloadcask-e74ade7ac9bfff9239c0243c0fdf01b18d4a0ec3.tar.gz
cask-e74ade7ac9bfff9239c0243c0fdf01b18d4a0ec3.tar.bz2
cask-e74ade7ac9bfff9239c0243c0fdf01b18d4a0ec3.zip
0.1.00.1.0
Diffstat (limited to 'cask')
-rw-r--r--cask/src/cask/endpoints/StaticEndpoints.scala19
-rw-r--r--cask/src/cask/endpoints/WebSocketEndpoint.scala2
-rw-r--r--cask/src/cask/model/Response.scala18
-rw-r--r--cask/src/cask/package.scala3
-rw-r--r--cask/test/resources/cask/example.txt1
5 files changed, 37 insertions, 6 deletions
diff --git a/cask/src/cask/endpoints/StaticEndpoints.scala b/cask/src/cask/endpoints/StaticEndpoints.scala
index 726af21..1d66b2c 100644
--- a/cask/src/cask/endpoints/StaticEndpoints.scala
+++ b/cask/src/cask/endpoints/StaticEndpoints.scala
@@ -3,14 +3,29 @@ package cask.endpoints
import cask.main.Endpoint
import cask.model.ParamContext
-class static(val path: String) extends Endpoint{
+class staticFiles(val path: String) extends Endpoint{
type Output = String
val methods = Seq("get")
type Input = Seq[String]
type InputParser[T] = QueryParamReader[T]
override def subpath = true
def wrapFunction(ctx: ParamContext, delegate: Delegate): Returned = {
- delegate(Map()).map(t => cask.model.Static(t + "/" + ctx.remaining.mkString("/")))
+ delegate(Map()).map(t => cask.model.StaticFile(t + "/" + ctx.remaining.mkString("/")))
+ }
+
+ def wrapPathSegment(s: String): Input = Seq(s)
+}
+
+class staticResources(val path: String, resourceRoot: ClassLoader = getClass.getClassLoader) extends Endpoint{
+ type Output = String
+ val methods = Seq("get")
+ type Input = Seq[String]
+ type InputParser[T] = QueryParamReader[T]
+ override def subpath = true
+ def wrapFunction(ctx: ParamContext, delegate: Delegate): Returned = {
+ delegate(Map()).map(t =>
+ cask.model.StaticResource(t + "/" + ctx.remaining.mkString("/"), resourceRoot)
+ )
}
def wrapPathSegment(s: String): Input = Seq(s)
diff --git a/cask/src/cask/endpoints/WebSocketEndpoint.scala b/cask/src/cask/endpoints/WebSocketEndpoint.scala
index a795afd..89c05b9 100644
--- a/cask/src/cask/endpoints/WebSocketEndpoint.scala
+++ b/cask/src/cask/endpoints/WebSocketEndpoint.scala
@@ -38,7 +38,7 @@ object WebsocketResult{
implicit class Listener(val value: WebSocketConnectionCallback) extends WebsocketResult
}
-class websocket(val path: String, subpath: Boolean = false) extends cask.main.BaseEndpoint{
+class websocket(val path: String, override val subpath: Boolean = false) extends cask.main.BaseEndpoint{
type Output = WebsocketResult
val methods = Seq("websocket")
type Input = Seq[String]
diff --git a/cask/src/cask/model/Response.scala b/cask/src/cask/model/Response.scala
index 979c442..9ac5664 100644
--- a/cask/src/cask/model/Response.scala
+++ b/cask/src/cask/model/Response.scala
@@ -62,7 +62,7 @@ case class Abort(code: Int) extends Response {
override def cookies = Nil
}
-case class Static(path: String) extends Response {
+case class StaticFile(path: String) extends Response {
val relPath = java.nio.file.Paths.get(path)
val (data0, statusCode0) =
if (java.nio.file.Files.exists(relPath) && java.nio.file.Files.isRegularFile(relPath)){
@@ -79,6 +79,22 @@ case class Static(path: String) extends Response {
override def cookies = Nil
}
+case class StaticResource(path: String, resourceRoot: ClassLoader) extends Response {
+ val relPath = java.nio.file.Paths.get(path)
+ val (data0, statusCode0) = resourceRoot.getResourceAsStream(path) match{
+ case null => ("": Response.Data, 404)
+ case res => (res: Response.Data, 200)
+ }
+
+ override def data = data0
+
+ override def statusCode = statusCode0
+
+ override def headers = Nil
+
+ override def cookies = Nil
+}
+
diff --git a/cask/src/cask/package.scala b/cask/src/cask/package.scala
index b1a1550..06d9738 100644
--- a/cask/src/cask/package.scala
+++ b/cask/src/cask/package.scala
@@ -30,7 +30,8 @@ package object cask {
type post = endpoints.post
type put = endpoints.put
type route = endpoints.route
- type static = endpoints.static
+ type staticFiles = endpoints.staticFiles
+ type staticResources = endpoints.staticResources
type postJson = endpoints.postJson
type postForm = endpoints.postForm
diff --git a/cask/test/resources/cask/example.txt b/cask/test/resources/cask/example.txt
deleted file mode 100644
index 5184576..0000000
--- a/cask/test/resources/cask/example.txt
+++ /dev/null
@@ -1 +0,0 @@
-the quick brown fox jumps over the lazy dog \ No newline at end of file