Module: Koala::Facebook::RestAPIMethods

Included in:
API
Defined in:
lib/koala/rest_api.rb

Constant Summary collapse

READ_ONLY_METHODS =

read-only methods for which we can use API-read taken directly from the FB PHP library (github.com/facebook/php-sdk/blob/master/src/facebook.php)

[
  'admin.getallocation',
  'admin.getappproperties',
  'admin.getbannedusers',
  'admin.getlivestreamvialink',
  'admin.getmetrics',
  'admin.getrestrictioninfo',
  'application.getpublicinfo',
  'auth.getapppublickey',
  'auth.getsession',
  'auth.getsignedpublicsessiondata',
  'comments.get',
  'connect.getunconnectedfriendscount',
  'dashboard.getactivity',
  'dashboard.getcount',
  'dashboard.getglobalnews',
  'dashboard.getnews',
  'dashboard.multigetcount',
  'dashboard.multigetnews',
  'data.getcookies',
  'events.get',
  'events.getmembers',
  'fbml.getcustomtags',
  'feed.getappfriendstories',
  'feed.getregisteredtemplatebundlebyid',
  'feed.getregisteredtemplatebundles',
  'fql.multiquery',
  'fql.query',
  'friends.arefriends',
  'friends.get',
  'friends.getappusers',
  'friends.getlists',
  'friends.getmutualfriends',
  'gifts.get',
  'groups.get',
  'groups.getmembers',
  'intl.gettranslations',
  'links.get',
  'notes.get',
  'notifications.get',
  'pages.getinfo',
  'pages.isadmin',
  'pages.isappadded',
  'pages.isfan',
  'permissions.checkavailableapiaccess',
  'permissions.checkgrantedapiaccess',
  'photos.get',
  'photos.getalbums',
  'photos.gettags',
  'profile.getinfo',
  'profile.getinfooptions',
  'stream.get',
  'stream.getcomments',
  'stream.getfilters',
  'users.getinfo',
  'users.getloggedinuser',
  'users.getstandardinfo',
  'users.hasapppermission',
  'users.isappuser',
  'users.isverified',
  'video.getuploadlimits'
]

Instance Method Summary collapse

Instance Method Details

#fql_multiquery(queries = {}, args = {}, options = {}) ⇒ Object



10
11
12
13
14
15
# File 'lib/koala/rest_api.rb', line 10

def fql_multiquery(queries = {}, args = {}, options = {})
  if results = rest_call('fql.multiquery', args.merge(:queries => MultiJson.encode(queries)), options)
    # simplify the multiquery result format
    results.inject({}) {|outcome, data| outcome[data["name"]] = data["fql_result_set"]; outcome}
  end
end

#fql_query(fql, args = {}, options = {}) ⇒ Object



6
7
8
# File 'lib/koala/rest_api.rb', line 6

def fql_query(fql, args = {}, options = {})
  rest_call('fql.query', args.merge(:query => fql), options)
end

#rest_call(fb_method, args = {}, options = {}, method = "get") ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/koala/rest_api.rb', line 22

def rest_call(fb_method, args = {}, options = {}, method = "get")
  options = options.merge!(:rest_api => true, :read_only => READ_ONLY_METHODS.include?(fb_method.to_s))

  api("method/#{fb_method}", args.merge('format' => 'json'), method, options) do |response|
    # check for REST API-specific errors
    if response.is_a?(Hash) && response["error_code"]
      raise APIError.new("type" => response["error_code"], "message" => response["error_msg"])
    end
  end
end

#set_app_properties(properties, args = {}, options = {}) ⇒ Object

Raises:



17
18
19
20
# File 'lib/koala/rest_api.rb', line 17

def set_app_properties(properties, args = {}, options = {})
  raise APIError.new({"type" => "KoalaMissingAccessToken", "message" => "setAppProperties requires an access token"}) unless @access_token
  rest_call("admin.setAppProperties", args.merge(:properties => MultiJson.encode(properties)), options, "post")
end