class SimpleGraphqlClient::Client

Public Class Methods

new(url:, &block) click to toggle source
# File lib/simple_graphql_client/client.rb, line 8
def initialize(url:, &block)
  @url = url
  @options = block
end

Public Instance Methods

query(gql:, variables: {}) click to toggle source
# File lib/simple_graphql_client/client.rb, line 13
def query(gql:, variables: {})
  response = RestClient.post(@url, {
    query: gql,
    variables: variables
  }.to_json, request_options)
  handle_response(JSON.parse(response.body, object_class: OpenStruct))
end

Private Instance Methods

handle_response(body) click to toggle source
# File lib/simple_graphql_client/client.rb, line 29
def handle_response(body)
  raise SimpleGraphqlClient::Errors::QueryError, body.errors if body.errors

  body.data
end
request_options() click to toggle source
# File lib/simple_graphql_client/client.rb, line 23
def request_options
  base_options = { content_type: :json }
  options = @options ? @options.call : {}
  base_options.merge(options)
end