Current section
Files
Jump to
Current section
Files
lib/dagger/client.ex
defmodule Dagger.Client do
@moduledoc """
The Dagger client.
"""
alias Dagger.EngineConn
defstruct [:req, :conn, :opts]
def connect(opts \\ []) do
with {:ok, conn} <- EngineConn.get() do
host = EngineConn.host(conn)
{:ok,
%__MODULE__{
req: Req.new(base_url: "http://#{host}") |> AbsintheClient.attach(),
conn: conn,
opts: opts
}}
end
end
def disconnect(%__MODULE__{conn: conn}) do
EngineConn.disconnect(conn)
end
def query(%__MODULE__{opts: opts} = client, query) when is_binary(query) do
Req.post(client.req,
url: "/query",
graphql: query,
auth: {token(client), ""},
receive_timeout: opts[:timeout] || 300_000
)
end
defp token(%__MODULE__{conn: conn}) do
EngineConn.token(conn)
end
end