class Braintree::GraphQLClient
Public Class Methods
Source
# File lib/braintree/graphql_client.rb, line 46 def self.get_validation_error_code(error) error[:extensions] && error[:extensions][:legacyCode] rescue nil end
Source
# File lib/braintree/graphql_client.rb, line 34 def self.get_validation_errors(response) return nil unless response.key?(:errors) && response[:errors].is_a?(Array) validation_errors = response[:errors].map do |error| { :attribute => "", :code => get_validation_error_code(error), :message => error[:message] } end {errors: validation_errors} end
Source
# File lib/braintree/graphql_client.rb, line 4 def initialize(config) @config = config @graphql_headers = { "Accept" => "application/json", "Braintree-Version" => @config.graphql_api_version, "Content-Type" => "application/json" } end
Public Instance Methods
Source
# File lib/braintree/graphql_client.rb, line 28 def _parse_response(response) body = response.body body = Zlib::GzipReader.new(StringIO.new(body)).read if response.header["Content-Encoding"] == "gzip" JSON.parse(body, :symbolize_names => true) end
Source
# File lib/braintree/graphql_client.rb, line 13 def query(definition, variables = {}, operationName = nil) graphql_connection = _setup_connection(@config.graphql_server, @config.graphql_port) request = {} request["query"] = definition request["operationName"] = operationName if operationName request["variables"] = variables response = _http_do Net::HTTP::Post, @config.graphql_base_url, request.to_json, nil, graphql_connection, @graphql_headers data = _parse_response(response) Util.raise_exception_for_graphql_error(data) data end