Class: HasHelpers::ServiceTrust::GraphQLClient

Inherits:
Object
  • Object
show all
Defined in:
lib/has_helpers/service_trust/graphql_client.rb

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Constructor Details

#initialize(audience:, base_url:, path: "/internal_graphql", client: nil) ⇒ GraphQLClient

Returns a new instance of GraphQLClient.



18
19
20
21
22
# File 'lib/has_helpers/service_trust/graphql_client.rb', line 18

def initialize(audience:, base_url:, path: "/internal_graphql", client: nil)
  @audience = audience
  @path = path
  @client = client || Client.new(audience: audience, base_url: base_url)
end

Instance Method Details

#query(document, variables: {}, operation_name: nil, capability: nil) ⇒ Object

Raises:



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/has_helpers/service_trust/graphql_client.rb', line 24

def query(document, variables: {}, operation_name: nil, capability: nil)
  response = @client.post(
    @path,
    body: { query: document, variables: variables, operationName: operation_name }.compact,
    capability: capability
  )
  raise GraphQLClientError, "HTTP #{response.status}" unless response.success?

  parsed = response.parsed || {}
  result = Result.new(data: parsed["data"], errors: parsed["errors"] || [], extensions: parsed["extensions"])
  record_graphql_errors!(result)
  result
end