-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Gary,
On 5/7/18 11:24 AM, Gary Gregory wrote: > What could be more useful is a more general solution in a new > module based on Apache Commons Compress that calls > org.apache.commons.compress.compressors.CompressorStreamFactory.create CompressorOutputStream(String, > > OutputStream). > > That would give you support for: > > GZIP BZIP2 XZ PACK200 LZMA DEFLATE SNAPPY_FRAMED LZ4_BLOCK > LZ4_FRAMED ZSTANDARD What, no Brotli[1]? ;) I'm almost entirely kidding, but most of the above compression methods are not supported by web servers. RFC 7231 only defined content-encoding tokens for gzip, deflate, and compress/x-compress (and "identity"). Mozilla extends that list to include 'br' (for Brotli) . So, while using a generalized method for compression, you might want to limit it to actually-useful compression types. - -chris [1] https://en.wikipedia.org/wiki/Brotli > On Mon, May 7, 2018 at 9:15 AM, Philippe Mouawad < > [email protected]> wrote: > >> Hello, There are sometimes a requirement to automatically gzip >> the request body whenever Content-Encoding is set to gzip. >> >> Would you find it interesting to add this feature to HttpClient >> ? >> >> The implementation would look like: >> >> private static final class GzipHttpRequestInterceptor implements >> HttpRequestInterceptor { @Override public void >> process(HttpRequest request, HttpContext context) throws >> HttpException, IOException { if(request instanceof >> HttpEntityEnclosingRequest) { Header header = >> request.getFirstHeader(" Content-Encoding"); if(header != null && >> "gzip".equals(header.getValue())) { HttpEntityEnclosingRequest >> enclosingRequest = (HttpEntityEnclosingRequest) request; >> HttpEntity entity = enclosingRequest.getEntity(); >> ByteArrayOutputStream out = new ByteArrayOutputStream(); try >> (GZIPOutputStream gzipOS = new GZIPOutputStream(out)) { >> entity.writeTo(gzipOS); } enclosingRequest.setEntity(new >> ByteArrayEntity(out.toByteArray())); } } } } >> >> >> Use could add it to processing like this: >> >> - builder.addInterceptorFirst(new GzipHttpRequestInterceptor() >> ); >> >> Or it could be enabled by default. >> >> >> Questions: >> >> - Would you accept it as a PR ? - Do you see immediate >> improvements in the provided code ? >> >> Thanks -- Regards Philippe Mouawad. Ubik-Ingénierie >> > -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlrwg+wACgkQHPApP6U8 pFhYtQ//f55PE47LkRrtD3xp0HiAoT1uTRVnHmlvNKRjueO9c/HdZLmO5R2kMHY0 yeFyrAGwlYwNA3d78htHRUgB9QPA8ErIxZF1/z96xI8fsIyB5fa/sz5fCWINX73F paF9oqle/jJ7brbO13cvmylqbHVPlHCBzHsqf5jYsCwMURfjpwjaBv5E5TYruENY Vk90y1EUcmyz2ZLf56nGzQ/1+3sewapzrjS/FoOvF4Jj5gUOwYm9hKMRobX5WGt6 +netnDXy8lZZUcY/DB9iM2SYwze1cKJzDlT2mxQDmmeiUKaPvoCA6NwG+/xw/z5f ZQL9GJRToTLTY+Agqd7pQ7I3BE+DTM/4+EbueO9t3O9J3hLE9HYhvUvTKcs0+Z8c MTDF9UreQhO679Nf+FYbwJIlZ9DCI4JxLNAn5HI+re8bdX9YTXA+j+O80Cfmki2K 5ocO5B9kejzPXyVJM2rIoOZvlTs7jje5XdbJN68P0Pa+gWLFb1+9Own0y8tJ8Ipq N7k9gClYreL3Em+mYeEL7BBKT3/hiIUrVo/d25tDBJ77sEQsFQw8sH2jFOzZkdA9 /5tnMs8Fn7rIRkc0si3zQ8xovdgJjlRuKwxMZLDg4fGZRX7ZzAt3j4GoAvhHIiD+ H+prHme2L4ymblBy7Meyd9C4342m2sTjS0y3ZZAfZyaOuNQpOmY= =LM2i -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
