summaryrefslogtreecommitdiff
path: root/cask/src/cask/decorators/compress.scala
diff options
context:
space:
mode:
Diffstat (limited to 'cask/src/cask/decorators/compress.scala')
-rw-r--r--cask/src/cask/decorators/compress.scala55
1 files changed, 26 insertions, 29 deletions
diff --git a/cask/src/cask/decorators/compress.scala b/cask/src/cask/decorators/compress.scala
index fc67dd4..22bd29e 100644
--- a/cask/src/cask/decorators/compress.scala
+++ b/cask/src/cask/decorators/compress.scala
@@ -9,35 +9,32 @@ import collection.JavaConverters._
class compress extends cask.Decorator{
def wrapFunction(ctx: ParamContext, delegate: Delegate) = {
val acceptEncodings = ctx.exchange.getRequestHeaders.get("Accept-Encoding").asScala.flatMap(_.split(", "))
- delegate(Map()) match{
- case Router.Result.Success(v) =>
- val (newData, newHeaders) = if (acceptEncodings.exists(_.toLowerCase == "gzip")) {
- new Response.Data {
- def write(out: OutputStream): Unit = {
- val wrap = new GZIPOutputStream(out)
- v.data.write(wrap)
- wrap.flush()
- wrap.close()
- }
- } -> Seq("Content-Encoding" -> "gzip")
- }else if (acceptEncodings.exists(_.toLowerCase == "deflate")){
- new Response.Data {
- def write(out: OutputStream): Unit = {
- val wrap = new DeflaterOutputStream(out)
- v.data.write(wrap)
- wrap.flush()
- }
- } -> Seq("Content-Encoding" -> "deflate")
- }else v.data -> Nil
- Router.Result.Success(
- Response(
- newData,
- v.statusCode,
- v.headers ++ newHeaders,
- v.cookies
- )
- )
- case e: Router.Result.Error => e
+ delegate(Map()).map{ v =>
+ val (newData, newHeaders) = if (acceptEncodings.exists(_.toLowerCase == "gzip")) {
+ new Response.Data {
+ def write(out: OutputStream): Unit = {
+ val wrap = new GZIPOutputStream(out)
+ v.data.write(wrap)
+ wrap.flush()
+ wrap.close()
+ }
+ } -> Seq("Content-Encoding" -> "gzip")
+ }else if (acceptEncodings.exists(_.toLowerCase == "deflate")){
+ new Response.Data {
+ def write(out: OutputStream): Unit = {
+ val wrap = new DeflaterOutputStream(out)
+ v.data.write(wrap)
+ wrap.flush()
+ }
+ } -> Seq("Content-Encoding" -> "deflate")
+ }else v.data -> Nil
+ Response(
+ newData,
+ v.statusCode,
+ v.headers ++ newHeaders,
+ v.cookies
+ )
}
+
}
}