-
zhitomirskiyi a rédigézhitomirskiyi a rédigé
facebook.rb 1,59 Kio
class Services::Facebook < Service
MAX_CHARACTERS = 420
def provider
"facebook"
end
def post(post, url='')
Rails.logger.debug("event=post_to_service type=facebook sender_id=#{self.user_id}")
message = public_message(post, url)
begin
RestClient.post("https://graph.facebook.com/me/feed", :message => message, :access_token => self.access_token)
rescue Exception => e
Rails.logger.info("#{e.message} failed to post to facebook")
end
end
def public_message(post, url)
super(post, MAX_CHARACTERS, url)
end
def finder(opts = {})
Rails.logger.debug("event=friend_finder type=facebook sender_id=#{self.user_id}")
if self.service_users == []
self.save_friends
else
Resque.enqueue(Job::UpdateServiceUsers, self.id)
end
person = Person.arel_table
service_user = ServiceUser.arel_table
if opts[:local]
ServiceUser.joins(:person).where(:service_id => self.id).where(person[:owner_id].not_eq(nil)).all
elsif opts[:remote]
ServiceUser.joins(:person).where(:service_id => self.id).where(person[:owner_id].eq(nil)).all
else
self.service_users
end
end
def save_friends
response = RestClient.get("https://graph.facebook.com/me/friends", {:params =>
{:fields => ['name', 'id', 'picture'], :access_token => self.access_token}})
data = JSON.parse(response.body)['data']
data.each{ |p|
ServiceUser.find_or_create_by_service_id_and_uid(:service_id => self.id, :name => p["name"],
:uid => p["id"], :photo_url => p["picture"])
}
end
end