Current section

Files

Jump to
compox lib docker api client.ex
Raw

lib/docker/api/client.ex

defmodule Compox.Docker.API.Client do
@moduledoc false
use Tesla
adapter Tesla.Adapter.Hackney, recv_timeout: 30_000
@doc """
Converts the given params hash and add it to the url.
"""
def add_query_params(url, params) do
filtered_query =
params
|> Enum.map(fn {p, v} -> {p, Jason.encode!(v)} end)
|> URI.encode_query()
"#{url}?#{filtered_query}"
end
@doc """
Send a GET request to the Docker API at the speicifed resource.
"""
def do_get(resource, headers \\ default_headers()) do
full = base_url() <> resource
get!(full, headers)
end
#
# Private functions
#
@spec base_url :: String.t()
defp base_url do
host =
Application.get_env(
:docker,
:host,
"http+unix://%2fvar%2frun%2fdocker.sock"
)
version = Application.get_env(:compox, :docker_version, "v1.27")
"#{host}/#{version}"
end
@spec default_headers :: map()
defp default_headers do
[{"Content-Type", "application/json"}]
end
end