Method: Facebook::GraphClient#fql

Defined in:
lib/facebook-graphclient.rb

#fql(query) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/facebook-graphclient.rb', line 76

def fql query
  query_params = {
    :access_token => @access_token,
    :format => 'json',
    :query => Rack::Utils.escape(query)
  }

  query_string = '?' + query_params.map { |k,v| "#{k}=#{v}" }.join("&") unless query_params.empty?

  tries = 0
  begin
    raw_response = @session.get("https://api.facebook.com/method/fql.query" + query_string)
  rescue Patron::HostResolutionError, Patron::ConnectionFailed
    retry if tries < 5
    tries += 1
  end

  json = ["false", '', nil].include?(raw_response.body) ? '{}' : raw_response.body
  response = Yajl::Parser.parse(json)

  if e = response.first['error']
    error = FacebookError.new(e['message'])
    error.data = e
    raise error
  else
    response
  end
end