lib/social_profile/people/facebook.rb in social_profile-0.3.0 vs lib/social_profile/people/facebook.rb in social_profile-0.3.1

- old
+ new

@@ -1,77 +1,58 @@ -require "fb_graph" +require "fb_graph2" module SocialProfile module People class Facebook < Person - FRIENDS_FQL = "SELECT friend_count FROM user WHERE uid=me()" - FIRST_POST_FQL = "SELECT created_time FROM stream WHERE source_id = me() AND created_time < {date} limit 1" LAST_POSTS_FIELDS = [ - "comments.fields(created_time).limit(1).summary(true)", + "comments.fields(created_time).limit(1).summary(true)", "likes.limit(1).fields(id).summary(true)", "created_time", "shares" ] POST_FIELDS = [ - "comments.fields(created_time).limit(1).summary(true)", + "comments.fields(created_time).limit(1).summary(true)", "likes.limit(1).fields(id).summary(true)", "created_time", "shares" ] - MUTUAL_FRIENDS = "SELECT uid, mutual_friend_count FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1=me()) ORDER BY mutual_friend_count" # Find album by id def fetch_album(album_id) - ::FbGraph::Album.fetch(album_id, :access_token => access_token) + ::FbGraph2::Album.fetch(album_id, :access_token => access_token) end - + # Create new album id def album!(options = {}) user.album!(options) end # Get friends count # def friends_count - @friends_count ||= fetch_friends_count + @friends_count ||= friends(limit: 1).summary['total_count'] end # Get followers count # def followers_count @followers_count ||= followers(:limit => 1).size end - def fetch_friends_count - response = FbGraph::Query.new(FRIENDS_FQL).fetch(:access_token => access_token) - - response = response.first if response.is_a?(Array) - return nil if response.is_a?(Hash) && response["friend_count"].blank? - - response["friend_count"].to_i - end - - # Check if exists any post before current year + # Check if exists any post before current year # def first_post_exists?(year) - timestamp = Time.new(year, 1, 1).utc.to_i - - _sql = FIRST_POST_FQL.gsub('{date}', timestamp.to_s) - response = FbGraph::Query.new(_sql).fetch(:access_token => access_token) - - response = response.first if response.is_a?(Array) - return nil if response.nil? || (response.is_a?(Hash) && response["created_time"].blank?) - - response["created_time"].to_i + # TODO + return nil end # Get last limited posts from feed with comments, shares and likes counters # def last_posts(limit, options = {}) fields = options[:fields] || LAST_POSTS_FIELDS - user.feed(:fields => fields.join(","), :limit => limit) + user.feed(:fields => fields.join(","), :limit => limit) end # Get last post by days from feed with comments, shares and likes counters # def last_post_by_days(days, options={}) @@ -80,11 +61,11 @@ max_iteration = options[:max_iteration] || 100 iteration = 0 posts = collection = last_posts(limit, options) return [] if posts.blank? || posts.last.created_time.nil? - + last_created_time = posts.last.created_time while !last_created_time.blank? && last_created_time > date && iteration < max_iteration iteration += 1 collection = collection.next @@ -129,26 +110,22 @@ # Get post from feed with comments, shares and likes counters # def fetch_post(post_uid, options = {}) fields = options[:fields] || POST_FIELDS - ::FbGraph::Post.fetch(post_uid, :fields => fields.join(","), :access_token => access_token) + ::FbGraph2::Post.fetch(post_uid, :fields => fields.join(","), :access_token => access_token) end # Get friends list with mutual friends counter # def mutual_friends(options={}) - response = FbGraph::Query.new(MUTUAL_FRIENDS).fetch(:access_token => access_token) - - return {} unless response.is_a?(Array) - - response.inject({}) {|h, a| h.merge!(a["uid"] => a["mutual_friend_count"]) } + return {} end protected - + def user - @user ||= ::FbGraph::User.me(access_token) + @user ||= ::FbGraph2::User.me(access_token) end end end end