microformats / php-mf2

php-mf2 is a pure, generic microformats-2 parser for PHP. It makes HTML as easy to consume as JSON.
Creative Commons Zero v1.0 Universal
192 stars 38 forks source link

Support compression in fetch() #208

Open Zegnat opened 5 years ago

Zegnat commented 5 years ago

This became clear when inspecting indieweb/indiewebify-me#78.

Curl does not automatically support any compression. This is problematic as it also does not send an Accept-Encoding header. Note that not sending the header at all suggests to the server that any encoding is fine, and they are free to respond with a compressed format. It looks like most will not do this though, or this would have come up before.

I think we have two clear options:

  1. Specify a specific Accept-Encoding value of identity, which should tell servers never to send compressed data; or
  2. defining CURLOPT_ENCODING to automatically have Curl handle the compressions it knows about (DEFLATE and gzip):

    curl_setopt($ch, CURLOPT_ENCODING, '');
Zegnat commented 5 years ago

Alternatively I wonder if we should offload this to an external dependency. Maybe even aaronpk/p3k-http. That way all those weird extra flags we need for HTTP/2, gzip, etc., only need to get added once and multiple projects will profit from it.

Thoughts, @aaronpk?

aaronpk commented 5 years ago

One of the goals of this library is to be self-contained so that it can be included in other projects without bringing in a lot of other dependencies. I think it's best to just add this flag here rather than bring in p3k-http or any other http client.