Tesla.Adapter.Gun (tesla v1.4.0) View Source
Adapter for gun.
Remember to add {:gun, "~> 1.3"}, {:idna, "~> 6.0"} and {:castore, "~> 0.1"} to dependencies.
In version 1.3 gun sends host header with port. Fixed in master branch.
Also, you need to recompile tesla after adding :gun dependency:
mix deps.clean tesla
mix deps.compile teslaExample usage
# set globally in config/config.exs
config :tesla, :adapter, Tesla.Adapter.Gun
# set per module
defmodule MyClient do
use Tesla
adapter Tesla.Adapter.Gun
endAdapter specific options
:timeout- Time, while process, will wait for gun messages.:body_as- What will be returned in%Tesla.Env{}body key. Possible values -:plain,:stream,:chunks. Defaults to:plain.:plain- as binary.:stream- as stream. If you don't want to close connection (because you want to reuse it later) passclose_conn: falsein adapter opts.:chunks- as chunks. You can get response body in chunks usingTesla.Adapter.Gun.read_chunk/3function. Processing of the chunks and checking body size must be done by yourself. Example of processing function is intest/tesla/adapter/gun_test.exs-Tesla.Adapter.GunTest.read_body/4. If you don't need connection later don't forget to close it withTesla.Adapter.Gun.close/1.
:max_body- Max response body size in bytes. Works only withbody_as: :plain, with other settings you need to check response body size by yourself.:conn- Opened connection pid with gun. Is used for reusing gun connections.:close_conn- Close connection or not after receiving full response body. Is used for reusing gun connections. Defaults totrue.:certificates_verification- Add SSL certificates verification. erlang-certifi ssl_verify_fun.erl:proxy- Proxy for requests. Socks proxy are supported only for gun master branch. Examples:{'localhost', 1234},{{127, 0, 0, 1}, 1234},{:socks5, 'localhost', 1234}.
Gun options
:connect_timeout- Connection timeout.:http_opts- Options specific to the HTTP protocol.:http2_opts- Options specific to the HTTP/2 protocol.:protocols- Ordered list of preferred protocols. Defaults:[:http2, :http]- for :tls,[:http]- for :tcp.:trace- Whether to enable dbg tracing of the connection process. Should only be used during debugging. Default: false.:transport- Whether to use TLS or plain TCP. The default varies depending on the port used. Port 443 defaults to tls. All other ports default to tcp.:transport_opts- Transport options. They are TCP options or TLS options depending on the selected transport. Default:[]. Gun version: 1.3:tls_opts- TLS transport options. Default:[]. Gun from master branch.:tcp_opts- TCP trasnport options. Default:[]. Gun from master branch.:socks_opts- Options for socks. Default:[]. Gun from master branch.:ws_opts- Options specific to the Websocket protocol. Default:%{}.:compress- Whether to enable permessage-deflate compression. This does not guarantee that compression will be used as it is the server that ultimately decides. Defaults to false.:protocols- A non-empty list enables Websocket protocol negotiation. The list of protocols will be sent in the sec-websocket-protocol request header. The handler module interface is currently undocumented and must be set togun_ws_h.