Packages
dagger
0.13.5
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
alias Dagger.Core.GraphQL.Response
@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, status, result} <- client.request(url, session_token, request, timeout: timeout),
{:ok, map} <- json.decode(result) do
response = Response.from_map(map)
case status do
200 -> {:ok, response}
_ -> {:error, response}
end
else
otherwise ->
otherwise
end
end
end