lib/tesla/middleware/opts.ex
defmodule Tesla.Middleware.Opts do
@moduledoc """
Set default opts for all requests.
## Examples
```
defmodule Myclient do
use Tesla
plug Tesla.Middleware.Opts, [some: "option"]
end
```
"""
@behaviour Tesla.Middleware
@impl Tesla.Middleware
def call(env, next, opts) do
adapter =
env.opts
|> Keyword.get(:adapter, [])
|> Keyword.merge(opts[:adapter] || [])
opts =
env.opts
|> Keyword.merge(opts)
|> Keyword.put(:adapter, adapter)
Tesla.run(%{env | opts: opts}, next)
end
end