facebook.rb 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. # Copyright (C) 2012-2015 Zammad Foundation, http://zammad-foundation.org/
  2. require 'facebook'
  3. class Channel::Driver::Facebook
  4. def fetch (options, channel)
  5. @channel = channel
  6. @sync = options['sync']
  7. @pages = options['pages']
  8. Rails.logger.debug 'facebook fetch started'
  9. fetch_feed
  10. disconnect
  11. Rails.logger.debug 'facebook fetch completed'
  12. notice = ''
  13. {
  14. result: 'ok',
  15. notice: notice,
  16. }
  17. end
  18. def send(options, fb_object_id, article, _notification = false)
  19. access_token = nil
  20. options['pages'].each {|page|
  21. next if page['id'].to_s != fb_object_id.to_s
  22. access_token = page['access_token']
  23. }
  24. if !access_token
  25. raise "No access_token found for fb_object_id: #{fb_object_id}"
  26. end
  27. client = Facebook.new(access_token)
  28. client.from_article(article)
  29. end
  30. =begin
  31. instance = Channel::Driver::Facebook.new
  32. instance.fetchable?(channel)
  33. =end
  34. def fetchable?(_channel)
  35. true
  36. end
  37. def disconnect
  38. end
  39. private
  40. def get_page(page_id)
  41. @pages.each {|page|
  42. return page if page['id'].to_s == page_id.to_s
  43. }
  44. nil
  45. end
  46. def fetch_feed
  47. return if !@sync
  48. return if !@sync['pages']
  49. @sync['pages'].each {|page_to_sync_id, page_to_sync_params|
  50. page = get_page(page_to_sync_id)
  51. next if !page
  52. next if !page_to_sync_params['group_id']
  53. next if page_to_sync_params['group_id'].empty?
  54. page_client = Facebook.new(page['access_token'])
  55. posts = page_client.client.get_connection('me', 'feed', fields: 'id,from,to,message,created_time,comments')
  56. posts.each {|post|
  57. page_client.to_group(post, page_to_sync_params['group_id'], @channel, page)
  58. }
  59. }
  60. true
  61. end
  62. end