Current section
Files
Jump to
Current section
Files
lib/docker_engine_api/connection.ex
# NOTE: This file is auto generated by OpenAPI Generator 7.0.1 (https://openapi-generator.tech).
# Do not edit this file manually.
defmodule DockerEngineAPI.Connection do
@moduledoc """
Handle Tesla connections for DockerEngineAPI.
"""
@default_options [
base_url: "http://localhost/v1.43",
adapter: Tesla.Adapter.Hackney
]
@typedoc """
The list of options that can be passed to new/1.
- `base_url`: Overrides the base URL on a per-client basis.
- `user_agent`: Overrides the User-Agent header.
"""
@type options :: [
{:base_url, String.t()},
{:user_agent, String.t()}
]
@doc "Forward requests to Tesla."
@spec request(Tesla.Client.t(), [Tesla.option()]) :: Tesla.Env.result()
defdelegate request(client, options), to: Tesla
@doc """
Configure a client that may have authentication.
### Parameters
- `options`: a keyword list of OpenAPIPetstore.Connection.options.
### Returns
Tesla.Env.client
"""
@spec new(options) :: Tesla.Env.client()
def new(options \\ []) when is_list(options) do
options = @default_options |> Keyword.merge(options)
options
|> Keyword.merge(options)
|> middleware()
|> Tesla.client(adapter(options))
end
@doc """
Returns fully configured middleware for passing to Tesla.client/2.
"""
@spec middleware(options) :: [Tesla.Client.middleware()]
def middleware(options \\ []) do
base_url = Keyword.get(options, :base_url)
tesla_options = get_tesla_options()
middleware = Keyword.get(tesla_options, :middleware, [])
json_engine = Keyword.get(tesla_options, :json, Jason)
user_agent =
Keyword.get(
options,
:user_agent,
Keyword.get(
tesla_options,
:user_agent,
"openapi-generator - DockerEngineAPI 1.43 - elixir"
)
)
[
{Tesla.Middleware.BaseUrl, base_url},
{Tesla.Middleware.Headers, [{"user-agent", user_agent}]},
{Tesla.Middleware.EncodeJson, engine: json_engine}
| middleware
]
end
def get_tesla_options, do: Application.get_env(:tesla, __MODULE__, [])
@doc """
Returns the default adapter for this API.
"""
def adapter(options \\ []) do
case Keyword.get(
options,
:adapter,
Keyword.get(get_tesla_options(), :adapter, nil)
) do
Tesla.Adapter.Hackney ->
{Tesla.Adapter.Hackney, [recv_timeout: Keyword.get(options, :recv_timeout, 1_000)]}
other ->
other
end
end
end