Avik Ganguly created FINERACT-426:
-------------------------------------

             Summary: Filter to optionally compress response with gzip
                 Key: FINERACT-426
                 URL: https://issues.apache.org/jira/browse/FINERACT-426
             Project: Apache Fineract
          Issue Type: Bug
            Reporter: Avik Ganguly
            Assignee: Markus Geiss
            Priority: Minor


Accept a query parameter like isCompressionRequired. If this query param is 
present, compress the response using gzip. This will ensure less bandwidth 
usage if field apps are using mobile data.

Sample Code for response filter :-

Inside filter method :-

if 
(request.getRequestHeaders().getFirst(HttpHeaders.ACCEPT_ENCODING).contains("gzip"))
 {
                        
response.getHttpHeaders().add(HttpHeaders.CONTENT_ENCODING, "gzip");
                        response.setContainerResponseWriter(
                                new 
Adapter(response.getContainerResponseWriter()));
                    }



  private static final class Adapter implements ContainerResponseWriter {
        private final ContainerResponseWriter crw;

        private GZIPOutputStream gos;

        Adapter(ContainerResponseWriter crw) {
            this.crw = crw;
        }
        
        public OutputStream writeStatusAndHeaders(long contentLength, 
ContainerResponse response) throws IOException {
           gos = new GZIPOutputStream(crw.writeStatusAndHeaders(-1, response));
           return gos;
        }

        public void finish() throws IOException {
            gos.finish();
            crw.finish();
        }
    }

 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to