Packages
livebook
0.7.2
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.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Current section
Files
Jump to
Current section
Files
lib/livebook/hubs/enterprise_client.ex
defmodule Livebook.Hubs.EnterpriseClient do
@moduledoc false
alias Livebook.Utils.HTTP
@path "/api/v1"
def fetch_info(url, token) do
query = """
query {
info {
id
}
}
"""
with {:ok, %{"info" => info}} <- graphql(url, token, query) do
{:ok, info}
end
end
def fetch_me(url, token) do
query = """
query {
me {
id
}
}
"""
with {:ok, %{"me" => me}} <- graphql(url, token, query) do
{:ok, me}
end
end
defp graphql(url, token, query, input \\ %{}) do
headers = [{"Authorization", "Bearer #{token}"}]
body = {"application/json", Jason.encode!(%{query: query, variables: input})}
case HTTP.request(:post, graphql_endpoint(url), headers: headers, body: body) do
{:ok, 200, _, body} ->
case Jason.decode!(body) do
%{"errors" => [%{"message" => "invalid_token"}]} ->
{:error, "request failed with invalid token", :invalid_token}
%{"errors" => [%{"message" => "unauthorized"}]} ->
{:error, "request failed with unauthorized", :unauthorized}
%{"errors" => [%{"message" => message}]} ->
{:error, "request failed with message: #{message}", :other}
%{"data" => data} ->
{:ok, data}
end
{:error, {:failed_connect, _}} ->
{:error, "request failed to connect", :invalid_url}
end
end
defp graphql_endpoint(url), do: url <> @path
end