tesla v1.3.0 Tesla.Adapter.Gun View Source
Adapter for [gun] https://github.com/ninenines/gun
Remember to add {:gun, "~> 1.3"}
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 in `test/tesla/adapter/gun_test.exs` - `read_body/3`. If you don't need connection later don't forget to close it with [`Tesla.Adapter.Gun.close/1`](Tesla.Adapter.Gun.html#close/1).
max_body
- Max response body size in bytes. Works only withbody_as: :plain
, with other settings you need to check responsebody size by yourself.
conn
- Opened connection pid with gun. Is used for reusing gun connections.original
- Original host with port, for which reused connection was open. Needed forTesla.Middleware.FollowRedirects
. Otherwiseadapter will use connection for another open host.
close_conn
- Close connection or not after receiving full response body. Is used for reusing gun connections.Defaults to `true`.
certificates_verification
- Add SSL certificates verification.https://github.com/certifi/erlang-certifi https://github.com/deadtrickster/ssl_verify_fun.erl
Gun options https://ninenines.eu/docs/en/gun/1.3/manual/gun/:
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.ws_opts
- Options specific to the Websocket protocol. Default: %{}.compress
- Whether to enable permessage-deflate compression. This does not guarantee that compression willbe 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 sentin the sec-websocket-protocol request header. The handler module interface is currently undocumented and must be set to `gun_ws_h`.
}