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