class GraphqlConnector::HttpClient

Wrapper class for HTTParty post query

Public Class Methods

new(uri, headers = {}, connector = {}) click to toggle source
# File lib/graphql_connector/http_client.rb, line 6
def initialize(uri, headers = {}, connector = {})
  @uri = uri
  @headers = headers
  @connector = connector
end

Public Instance Methods

mutation(model, inputs, selected_fields) click to toggle source
# File lib/graphql_connector/http_client.rb, line 19
def mutation(model, inputs, selected_fields)
  query_string =
    Formatters::MutationFormat.new(model, inputs, selected_fields).create
  parsed_body = raw_query(query_string)
  format_body(parsed_body['data'][model.to_s])
end
query(model, conditions, selected_fields) click to toggle source
# File lib/graphql_connector/http_client.rb, line 12
def query(model, conditions, selected_fields)
  query_string =
    Formatters::QueryFormat.new(model, conditions, selected_fields).create
  parsed_body = raw_query(query_string)
  format_body(parsed_body['data'][model.to_s])
end
raw_query(query_string, variables: {}) click to toggle source
# File lib/graphql_connector/http_client.rb, line 26
def raw_query(query_string, variables: {})
  response = HTTParty.post(@uri,
                           headers: handle_headers,
                           body: { query: query_string,
                                   variables: variables })
  parsed_body = JSON.parse(response.body)
  verify_response!(parsed_body)
  parsed_body
end

Private Instance Methods

format_body(response_body) click to toggle source
# File lib/graphql_connector/http_client.rb, line 45
def format_body(response_body)
  return OpenStruct.new(response_body) unless response_body.is_a? Array

  response_body.map { |entry| OpenStruct.new(entry) }
end
handle_headers() click to toggle source
# File lib/graphql_connector/http_client.rb, line 38
def handle_headers
  return @headers if @connector.empty?

  @headers
    .merge(@connector[:base].public_send(@connector[:method]))
end
verify_response!(parsed_body) click to toggle source
# File lib/graphql_connector/http_client.rb, line 51
def verify_response!(parsed_body)
  return unless parsed_body.key? 'errors'

  raise CustomAttributeError, parsed_body['errors']
end