class GraphQL::REPL
Constants
- IntrospectionDocument
Public Class Methods
new(uri, username: nil, password: nil, netrc: false, headers: {})
click to toggle source
# File lib/graphql/repl.rb, line 10 def initialize(uri, username: nil, password: nil, netrc: false, headers: {}) @uri = URI.parse(uri) @headers = headers @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
Public Instance Methods
completions(str)
click to toggle source
# File lib/graphql/repl.rb, line 49 def completions(str) Expression.new(@schema, str).completions end
eval(str)
click to toggle source
# 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)
click to toggle source
# 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" @headers.each { |k, v| request[k] = v } request.body = JSON.generate({"query" => query}) response = @connection.request(request) JSON.parse(response.body) end