defmodule EzcontainerRailway.Railway do alias EzcontainerRailway.GraphqlClient def get_projects(token) do GraphqlClient.query( """ query { projects { edges { node { id name } } } } """, token: token ) end def create_service(container, token) when is_map(container) do GraphqlClient.query( """ """, variables: container ) end def create_project(name, token) do GraphqlClient.query( """ mutation { projectCreate(input: {name: $name}) { id name } } """, token: token, variables: %{ "name" => name } ) |> format_response end def is_token_valid?(token) do resp = get_projects(token).body if has_errors?(resp) do false else true end end def has_errors?(resp) when is_map(resp) do has_errors_in_array?(resp["errors"]) end defp format_response(resp) when is_map(resp) do if has_errors?(resp) do {:error, resp["error"]} else {:ok, resp["data"]} end end defp has_errors_in_array?([_|_]), do: true defp has_errors_in_array?(_), do: false end