Class: GraphQL::REPL
- Inherits:
-
Object
show all
- Defined in:
- lib/graphql/repl.rb
Defined Under Namespace
Classes: Expression, Proxy
Constant Summary
collapse
- IntrospectionDocument =
GraphQL.parse(GraphQL::Introspection::INTROSPECTION_QUERY)
Instance Method Summary
collapse
Constructor Details
#initialize(uri, headers = {}) ⇒ REPL
Returns a new instance of REPL.
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/graphql/repl.rb', line 9
def initialize(uri, = {})
@uri = URI.parse(uri)
=
@connection = Net::HTTP.new(@uri.host, @uri.port).tap do |client|
client.use_ssl = @uri.scheme == "https"
end
@schema = GraphQL::Schema::Loader.load(request(IntrospectionDocument.to_query_string))
end
|
Instance Method Details
#completions(str) ⇒ Object
46
47
48
|
# File 'lib/graphql/repl.rb', line 46
def completions(str)
Expression.new(@schema, str).completions
end
|
#eval(str) ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/graphql/repl.rb', line 30
def eval(str)
expr = Expression.new(@schema, str)
if error = expr.error_message
return error
end
result = request(expr.document.to_query_string)
if result["errors"] && result["errors"][0]
result["errors"][0]["message"]
else
expr.response_path.reduce(result["data"]) { |obj, key| obj[key] }
end
end
|
#request(query) ⇒ Object
20
21
22
23
24
25
26
27
28
|
# File 'lib/graphql/repl.rb', line 20
def request(query)
request = Net::HTTP::Post.new(@uri.request_uri)
request["Accept"] = "application/json"
request["Content-Type"] = "application/json"
.each { |k, v| request[k] = v }
request.body = JSON.generate({"query" => query})
response = @connection.request(request)
JSON.parse(response.body)
end
|