Gun is an HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP.
First a heads up: while reviewing the release notes for the 2.0
pre-release I found that one of the bugs fixed could contribute to
security vulnerabilities in certain systems (using Gun inside a proxy in
specific environments) so I urge everyone to upgrade to at least Gun
details on this issue.
If you can I would highly recommend using the 2.0 pre-release. It
includes new features such as graceful shutdown of the connection, flow
control, event handlers (with MANY events) and the HTTP/2 code and
performance has greatly been improved.
On the proxy side of things, Gun now supports tunneling TLS connections
over TLS! Socks5 support has also been added and many improvements were
made to the existing proxy support. Now Gun can connect using TCP/TLS
through any combination and number of TCP/TLS HTTP/Socks5 proxies.
Gun can also be used for arbitrary protocols. In this case Gun acts more
like a socket. This can be used to make Gun tunnel data through proxies,
or to use HTTP/1.1 Upgrade to speak to non-HTTP/Websocket protocols.
The next pre-release will focus on adding HTTP/2 CONNECT support for
tunneling through HTTP/2 proxies, and at the same time implement
Websocket over HTTP/2 since that uses the same mechanism.
See the announcement article and the migration guide for details!