From d00705286218a5f501ab18bc8a50ec22f043b8b7 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Thu, 08 Jun 2017 17:15:11 +0000
Subject: [PATCH] #0 enh - Gzipping main bundle on the fly
---
securis/src/main/java/net/curisit/securis/GzipFilter.java | 29 ++++++++++++++++++++++-------
1 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/GzipFilter.java b/securis/src/main/java/net/curisit/securis/GzipFilter.java
index 6e448d9..4c0682c 100644
--- a/securis/src/main/java/net/curisit/securis/GzipFilter.java
+++ b/securis/src/main/java/net/curisit/securis/GzipFilter.java
@@ -10,13 +10,16 @@
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import net.curisit.securis.utils.GZipServletResponseWrapper;
+
@ApplicationScoped
-@WebFilter(urlPatterns = "*.gz")
+@WebFilter(urlPatterns = "*.js")
public class GzipFilter implements Filter {
@SuppressWarnings("unused")
@@ -27,12 +30,24 @@
}
@Override
- public void doFilter(ServletRequest sreq, ServletResponse sres, FilterChain fc) throws IOException, ServletException {
- //HttpServletRequest req = (HttpServletRequest) sreq;
- HttpServletResponse res = (HttpServletResponse) sres;
- res.addHeader("Content-Encoding", "gzip");
- // LOG.info("Content served as gzip: {}", req.getRequestURI());
- fc.doFilter(sreq, sres);
+ public void doFilter(ServletRequest sreq, ServletResponse sres, FilterChain chain) throws IOException, ServletException {
+ HttpServletRequest httpRequest = (HttpServletRequest) sreq;
+ HttpServletResponse httpResponse = (HttpServletResponse) sres;
+
+ if (acceptsGZipEncoding(httpRequest)) {
+ httpResponse.addHeader("Content-Encoding", "gzip");
+ GZipServletResponseWrapper gzipResponse = new GZipServletResponseWrapper(httpResponse);
+ chain.doFilter(sreq, gzipResponse);
+ gzipResponse.close();
+ } else {
+ chain.doFilter(sreq, sres);
+ }
+ }
+
+ private boolean acceptsGZipEncoding(HttpServletRequest httpRequest) {
+ String acceptEncoding = httpRequest.getHeader("Accept-Encoding");
+
+ return acceptEncoding != null && acceptEncoding.indexOf("gzip") != -1;
}
@Override
--
Gitblit v1.3.2