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 tesla
Example 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
end
Adapter 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: false
in adapter opts.:chunks
- as chunks. You can get response body in chunks usingTesla.Adapter.Gun.read_chunk/3
function. 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
.