Packages
dagger
0.11.4
0.21.7
0.21.6
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.8
0.20.7
0.20.6
0.20.5
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.11
0.19.10
0.19.9
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.19
0.18.18
0.18.17
0.18.16
0.18.15
0.18.14
0.18.13
0.18.12
0.18.11
0.18.10
0.18.9
0.18.8
0.18.7
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.2
0.17.1
0.17.0
0.16.3
0.16.2
0.16.1
0.16.0
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.0
0.13.7
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.2
0.0.0
retired
Dagger SDK for Elixir
Current section
Files
Jump to
Current section
Files
lib/dagger/core/graphql_client.ex
defmodule Dagger.Core.GraphQLClient do
@moduledoc false
@callback request(
url :: String.t(),
session_token :: String.t(),
request_body :: iodata(),
opts :: keyword()
) :: {:ok, status :: non_neg_integer(), response :: map()} | {:error, term()}
@doc """
Perform a request to GraphQL server.
"""
def request(url, session_token, query, variables, opts \\ []) do
client = Keyword.get(opts, :client, Dagger.Core.GraphQLClient.Httpc)
# TODO: change to json erlang standard library when support OTP 27 exclusively.
json = Keyword.get(opts, :json_library, Jason)
timeout = Keyword.get(opts, :timeout, :infinity)
request = %{query: query, variables: variables}
with {:ok, request} <- json.encode(request),
{:ok, 200, result} <- client.request(url, session_token, request, timeout: timeout) do
json.decode(result)
else
{:ok, _, error} ->
with {:ok, result} <- json.decode(error) do
{:error, result}
end
otherwise ->
otherwise
end
end
end