class Mogli::FqlMultiquery
Attributes
client[R]
queries[R]
raw_response[R]
Public Class Methods
new(client)
click to toggle source
Takes Mogli::Client
object
# File lib/mogli/fql_multiquery.rb, line 6 def initialize(client) @client = client @queries = {} end
Public Instance Methods
add_named_query_for_class(query_name, query, klass)
click to toggle source
Adds single query to multiquery with class used to populate results
# File lib/mogli/fql_multiquery.rb, line 12 def add_named_query_for_class(query_name, query, klass) @queries[query_name] = [query, klass] end
results()
click to toggle source
Fetch and parse results. Returns hash with the query names as keys, class objects as values. An empty or missing subquery value is returned as an empty array.
# File lib/mogli/fql_multiquery.rb, line 19 def results parse_response @raw_response = @client.fql_multiquery(query_map) end
Protected Instance Methods
parse_response(response)
click to toggle source
# File lib/mogli/fql_multiquery.rb, line 29 def parse_response(response) # Fetch each subquery and map its results to the desired class, @queries.each_key.inject({}) do |res, query| # Default value is empty array res[query] = [] # Find subquery by name in response vals = response.find{|r| return false unless r.is_a? Hash r['name'] == query.to_s } if vals && vals.has_key?('fql_result_set') res[query] = @client.map_to_class(vals['fql_result_set'], @queries[query][1]) end res end end
query_map()
click to toggle source
# File lib/mogli/fql_multiquery.rb, line 25 def query_map @queries.each_key.inject({}) { |res,k| res[k] = @queries[k][0]; res } end