diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-08-13 21:11:11 +0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-08-13 22:13:48 +0800 |
commit | e74ade7ac9bfff9239c0243c0fdf01b18d4a0ec3 (patch) | |
tree | 9589f3840df5203b60be89efa878d3c2ee678af0 /cask | |
parent | b1d516e2b7df2d881c4dc84840e1cdc475b845b5 (diff) | |
download | cask-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.scala | 19 | ||||
-rw-r--r-- | cask/src/cask/endpoints/WebSocketEndpoint.scala | 2 | ||||
-rw-r--r-- | cask/src/cask/model/Response.scala | 18 | ||||
-rw-r--r-- | cask/src/cask/package.scala | 3 | ||||
-rw-r--r-- | cask/test/resources/cask/example.txt | 1 |
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 |