class Lolitado::Graph

Public Class Methods

format_response(response, msecs) click to toggle source

format api response, override the parent method in API class

@param response [String] api response @param msecs [Float] benchmark for api response time

# File lib/lolitado/api.rb, line 93
def self.format_response response, msecs
  if response.parsed_response.is_a?(Hash)
    if response.parsed_response.has_key?('errors')
      message = response.parsed_response
    else
      message = response.parsed_response['data'].values[0]
    end
  else
    message = {'errors'=>response.parsed_response}
  end
  new_response =  {:response => response, :message => message, :status => response.code, :duration => msecs}
  response_with_hash_key = JSON.parse(JSON[new_response], symbolize_names: true)
  return response_with_hash_key
end
generate_body(query, variables) click to toggle source

generate http request body for graph api response

@param query [String] graph query @param variables [String] input variables for graph query using

# File lib/lolitado/api.rb, line 114
def self.generate_body query, variables
  body = {}
  body['query'] = query
  if variables
    variable_indices = query.enum_for(:scan, /(?=\$.*:)/).map { Regexp.last_match.offset(0).first }
    if query.include?('$input') && variable_indices.to_a.length == 1
      body['variables'] = {'input'=>variables}
    else
      body['variables'] = variables
    end
  end
  body['operationName'] = query.split(' ')[1].split('(')[0]
  return body.to_json
end
request(query, variables = false) click to toggle source

define a customize http request method for graph api, forward this method to call HTTParty.get or HTTParty.post or HTTParty.put or HTTParty.delete method

@param query [String] graph query @param variables [String] input variables for graph query using

Calls superclass method Lolitado::API::request
# File lib/lolitado/api.rb, line 83
def self.request query, variables = false
  super(:post, '', generate_body(query, variables))
end