Hi,

Brotli is supported in read-only mode:
https://commons.apache.org/proper/commons-compress/limitations.html

This is a limitation of the underlying library org.brotli.dec.

We welcome patches ;-)

Gary


On Mon, May 7, 2018 at 10:50 AM, Christopher Schultz <
ch...@christopherschultz.net> wrote:

> -----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 <
> > p.moua...@ubik-ingenierie.com> 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: httpclient-users-unsubscr...@hc.apache.org
> For additional commands, e-mail: httpclient-users-h...@hc.apache.org
>
>

Reply via email to