rsanchez
2017-06-08 d00705286218a5f501ab18bc8a50ec22f043b8b7
securis/src/main/java/net/curisit/securis/GzipFilter.java
....@@ -10,13 +10,16 @@
1010 import javax.servlet.ServletRequest;
1111 import javax.servlet.ServletResponse;
1212 import javax.servlet.annotation.WebFilter;
13
+import javax.servlet.http.HttpServletRequest;
1314 import javax.servlet.http.HttpServletResponse;
1415
1516 import org.apache.logging.log4j.LogManager;
1617 import org.apache.logging.log4j.Logger;
1718
19
+import net.curisit.securis.utils.GZipServletResponseWrapper;
20
+
1821 @ApplicationScoped
19
-@WebFilter(urlPatterns = "*.gz")
22
+@WebFilter(urlPatterns = "*.js")
2023 public class GzipFilter implements Filter {
2124
2225 @SuppressWarnings("unused")
....@@ -27,12 +30,24 @@
2730 }
2831
2932 @Override
30
- public void doFilter(ServletRequest sreq, ServletResponse sres, FilterChain fc) throws IOException, ServletException {
31
- //HttpServletRequest req = (HttpServletRequest) sreq;
32
- HttpServletResponse res = (HttpServletResponse) sres;
33
- res.addHeader("Content-Encoding", "gzip");
34
- // LOG.info("Content served as gzip: {}", req.getRequestURI());
35
- fc.doFilter(sreq, sres);
33
+ public void doFilter(ServletRequest sreq, ServletResponse sres, FilterChain chain) throws IOException, ServletException {
34
+ HttpServletRequest httpRequest = (HttpServletRequest) sreq;
35
+ HttpServletResponse httpResponse = (HttpServletResponse) sres;
36
+
37
+ if (acceptsGZipEncoding(httpRequest)) {
38
+ httpResponse.addHeader("Content-Encoding", "gzip");
39
+ GZipServletResponseWrapper gzipResponse = new GZipServletResponseWrapper(httpResponse);
40
+ chain.doFilter(sreq, gzipResponse);
41
+ gzipResponse.close();
42
+ } else {
43
+ chain.doFilter(sreq, sres);
44
+ }
45
+ }
46
+
47
+ private boolean acceptsGZipEncoding(HttpServletRequest httpRequest) {
48
+ String acceptEncoding = httpRequest.getHeader("Accept-Encoding");
49
+
50
+ return acceptEncoding != null && acceptEncoding.indexOf("gzip") != -1;
3651 }
3752
3853 @Override