Module: Aspera::GraphQL

Defined in:
lib/aspera/graphql.rb

Overview

Helper to execute GraphQL queries via a Rest object. Follows the GraphQL-over-HTTP convention: POST variables to endpoint, parse top-level data key, raise on top-level errors array.

Class Method Summary collapse

Class Method Details

.execute(rest, name, variables = {}) ⇒ Hash

Execute a GraphQL query loaded from a .graphql file in lib/aspera/api/queries/

Parameters:

  • rest (Rest)

    API object pointing at the GraphQL endpoint

  • name (String)

    Base filename without extension (e.g. 'my_query')

  • variables (Hash) (defaults to: {})

    GraphQL variables

Returns:

  • (Hash)

    The data object from the response

Raises:



20
21
22
23
24
25
26
# File 'lib/aspera/graphql.rb', line 20

def execute(rest, name, variables = {})
  query = load_query(name)
  response = rest.create(nil, {query: query, variables: variables})
  errors = response['errors']
  raise RestCallError, errors.map { |e| e['message'] }.join("\n") if errors.is_a?(Array) && !errors.empty?
  response['data']
end