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
|