class GqlClient::Session

Constants

INTROSPECTION_QUERY_FILE

Attributes

http[RW]
request[RW]

Public Class Methods

new(url, headers) click to toggle source
# File lib/gql_client.rb, line 34
def initialize(url, headers)
  url = URI(url)
  @http = Net::HTTP.new(url.host, url.port)

  @request = Net::HTTP::Post.new(url, headers)
  @request["cookie"] = 'request_method=POST'
  @request["content-type"] = 'application/json'
end

Public Instance Methods

execute(query, variables = {}) click to toggle source
# File lib/gql_client.rb, line 56
def execute(query, variables = {})
  body = {
    "query": query,
    "variables": variables
  }
  
  request.body = body.to_json
  
  response = http.request(request)
  response.code == "200" ? JSON.parse(response.read_body) : response.read_body
end
introspection_query() click to toggle source
# File lib/gql_client.rb, line 52
def introspection_query
  File.read(INTROSPECTION_QUERY_FILE)
end
schema() click to toggle source
# File lib/gql_client.rb, line 43
def schema
  @schema ||= begin
    request.body = {"query": introspection_query }.to_json
    response = http.request(request)
    raise StandardError, "Introspection Query Failed" unless response.code == "200"
    JSON.parse(response.read_body)
  end
end