diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2019-10-09 10:34:52 +0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2019-10-09 10:34:52 +0800 |
commit | e21d5ab3526937619c59dd01114b48521eee9d26 (patch) | |
tree | 488de7aaf17a84ffe0aeff845ec041d7d54c7fa0 /cask/src/cask/endpoints | |
parent | fb203e85b849817943f85d9c7368695fb8c78583 (diff) | |
download | cask-e21d5ab3526937619c59dd01114b48521eee9d26.tar.gz cask-e21d5ab3526937619c59dd01114b48521eee9d26.tar.bz2 cask-e21d5ab3526937619c59dd01114b48521eee9d26.zip |
Allow `staticFiles` and `staticFiles` to specify headers to respond with (e.g. for caching and expiration)
Diffstat (limited to 'cask/src/cask/endpoints')
-rw-r--r-- | cask/src/cask/endpoints/StaticEndpoints.scala | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/cask/src/cask/endpoints/StaticEndpoints.scala b/cask/src/cask/endpoints/StaticEndpoints.scala index 1e11055..618da5f 100644 --- a/cask/src/cask/endpoints/StaticEndpoints.scala +++ b/cask/src/cask/endpoints/StaticEndpoints.scala @@ -2,37 +2,35 @@ package cask.endpoints import cask.router.HttpEndpoint import cask.model.Request +object StaticUtil{ + def makePath(t: String, ctx: Request) = { + (cask.internal.Util.splitPath(t) ++ ctx.remainingPathSegments) + .filter(s => s != "." && s != "..") + .mkString("/") + } -class staticFiles(val path: String) extends HttpEndpoint[String, Seq[String]]{ +} +class staticFiles(val path: String, headers: Seq[(String, String)] = Nil) extends HttpEndpoint[String, Seq[String]]{ val methods = Seq("get") type InputParser[T] = QueryParamReader[T] override def subpath = true def wrapFunction(ctx: Request, delegate: Delegate): OuterReturned = { - delegate(Map()).map(t => - cask.model.StaticFile( - (cask.internal.Util.splitPath(t) ++ ctx.remainingPathSegments) - .filter(s => s != "." && s != "..") - .mkString("/") - ) - ) + delegate(Map()).map(t => cask.model.StaticFile(StaticUtil.makePath(t, ctx), headers)) } def wrapPathSegment(s: String): Seq[String] = Seq(s) } -class staticResources(val path: String, resourceRoot: ClassLoader = getClass.getClassLoader) +class staticResources(val path: String, + resourceRoot: ClassLoader = getClass.getClassLoader, + headers: Seq[(String, String)] = Nil) extends HttpEndpoint[String, Seq[String]]{ val methods = Seq("get") type InputParser[T] = QueryParamReader[T] override def subpath = true def wrapFunction(ctx: Request, delegate: Delegate): OuterReturned = { delegate(Map()).map(t => - cask.model.StaticResource( - (cask.internal.Util.splitPath(t) ++ ctx.remainingPathSegments) - .filter(s => s != "." && s != "..") - .mkString("/"), - resourceRoot - ) + cask.model.StaticResource(StaticUtil.makePath(t, ctx), resourceRoot, headers) ) } |