class Artemis::Adapters::NetHttpAdapter
Public Instance Methods
connection()
click to toggle source
Returns a fresh Net::HTTP object that creates a new connection.
# File lib/artemis/adapters/net_http_adapter.rb, line 39 def connection Net::HTTP.new(uri.host, uri.port).tap do |client| client.use_ssl = uri.scheme == "https" client.open_timeout = timeout client.read_timeout = timeout client.write_timeout = timeout if client.respond_to?(:write_timeout=) end end
execute(document:, operation_name: nil, variables: {}, context: {})
click to toggle source
Makes an HTTP request for GraphQL query.
# File lib/artemis/adapters/net_http_adapter.rb, line 13 def execute(document:, operation_name: nil, variables: {}, context: {}) request = Net::HTTP::Post.new(uri.request_uri) request.basic_auth(uri.user, uri.password) if uri.user || uri.password DEFAULT_HEADERS.merge(headers(context)).each { |name, value| request[name] = value } body = {} body["query"] = document.to_query_string body["variables"] = variables if variables.any? body["operationName"] = operation_name if operation_name request.body = JSON.generate(body) response = connection.request(request) case response.code.to_i when 200, 400 JSON.parse(response.body) when 500..599 raise Artemis::GraphQLServerError, "Received server error status #{response.code}: #{response.body}" else { "errors" => [{ "message" => "#{response.code} #{response.message}" }] } end end