Packages

The Engine API is an HTTP API served by Docker Engine. It is the API the Docker client uses to communicate with the Engine, so everything the Docker client can do can be done with the API.

Current section

Files

Jump to
ex_docker_engine_api lib docker_engine_api connection.ex
Raw

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