# NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
# https://openapi-generator.tech
# Do not edit the class manually.
defmodule NomadClient.Connection do
@moduledoc """
Handle Tesla connections for NomadClient.
"""
defdelegate request(conn, request), to: Tesla
@doc """
Configure a client connection using Basic authentication.
## Parameters
- url (String): Nomad URL Endpoint)
- token (String): ACL Token
# Returns
Tesla.Env.client
"""
def new(url \\ "http://localhost:4646", token \\ nil)
def new(url, nil) do
Tesla.client(default_opts(url), default_adapter())
end
def new(url, token) do
Tesla.client(
[
{Tesla.Middleware.Headers, [{"X-NOMAD-TOKEN", token}]}
| default_opts(url)
],
default_adapter()
)
end
defp default_opts(url) do
base_url =
url
|> URI.parse()
|> maybe_fix_path()
|> URI.to_string()
middleware =
:tesla
|> Application.get_env(__MODULE__, [])
|> Keyword.get(:middleware, [])
[
{Tesla.Middleware.BaseUrl, base_url},
{Tesla.Middleware.Headers, [{"User-Agent", "Elixir"}]},
{Tesla.Middleware.EncodeJson, [engine: Poison]}
| middleware
]
end
defp default_adapter do
:tesla
|> Application.get_env(__MODULE__, [])
|> Keyword.get(:adapter, nil)
end
defp maybe_fix_path(%{path: path} = uri) when path in [nil, "/", ""] do
%{uri | path: "/v1"}
end
defp maybe_fix_path(uri), do: uri
end