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, username: nil, password: nil, netrc: false, headers: {}) ⇒ REPL
Returns a new instance of REPL.
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/graphql/repl.rb', line 10
def initialize(uri, username: nil, password: nil, netrc: false, headers: {})
@uri = URI.parse(uri)
=
@username, @password = Netrc.read[@uri.hostname] if netrc
@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
49
50
51
|
# File 'lib/graphql/repl.rb', line 49
def completions(str)
Expression.new(@schema, str).completions
end
|
#eval(str) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/graphql/repl.rb', line 33
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
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/graphql/repl.rb', line 22
def request(query)
request = Net::HTTP::Post.new(@uri.request_uri)
request.basic_auth(@username, @password)
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
|