Sha256: 52e72881e5eca2df1f3f1a69a1938113aec81ef6b267ca2461d545a5c844e3d5

Contents?: true

Size: 1.06 KB

Versions: 17

Compression:

Stored size: 1.06 KB

Contents

module Braintree
  class GraphQLClient < Http # :nodoc:

    def initialize(config)
      @config = config
      @graphql_headers = {
        "Accept" => "application/json",
        "Braintree-Version" => @config.graphql_api_version,
        "Content-Type" => "application/json"
      }
    end

    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

    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
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
braintree-4.15.0 lib/braintree/graphql_client.rb
braintree-4.14.0 lib/braintree/graphql_client.rb
braintree-4.13.0 lib/braintree/graphql_client.rb
braintree-4.12.0 lib/braintree/graphql_client.rb
braintree-4.11.0 lib/braintree/graphql_client.rb
braintree-4.10.0 lib/braintree/graphql_client.rb
braintree-4.9.0 lib/braintree/graphql_client.rb
braintree-4.8.0 lib/braintree/graphql_client.rb
braintree-4.7.0 lib/braintree/graphql_client.rb
braintree-4.6.0 lib/braintree/graphql_client.rb
braintree-4.5.0 lib/braintree/graphql_client.rb
braintree-4.4.0 lib/braintree/graphql_client.rb
braintree-4.3.0 lib/braintree/graphql_client.rb
braintree-4.2.0 lib/braintree/graphql_client.rb
braintree-4.1.0 lib/braintree/graphql_client.rb
braintree-4.0.0 lib/braintree/graphql_client.rb
braintree-3.4.0 lib/braintree/graphql_client.rb