module Diaspora
module Webhooks
def self.included(klass)
klass.class_eval do
require 'message_handler'
@@queue = MessageHandler.new
def notify_people
if self.person_id == User.owner.person.id
push_to(people_with_permissions)
end
end
def notify_people!
push_to(people_with_permissions)
end
def push_to(recipients)
unless recipients.empty?
recipients.map!{|x| x = x.url + "receive/"}
xml = Post.build_xml_for(self)
Rails.logger.info("Adding xml for #{self} to message queue to #{recipients}")
@@queue.add_post_request( recipients, xml )
end
@@queue.process
end
def push_to_url(url)
hook_url = url + "receive/"
xml = self.class.build_xml_for(self)
Rails.logger.info("Adding xml for #{self} to message queue to #{url}")
@@queue.add_post_request( hook_url, xml )
@@queue.process
end
def to_diaspora_xml
"#{self.to_xml.to_s}"
end
def people_with_permissions
self.person.owner.friends.all
end
def self.build_xml_for(posts)
xml = ""
xml += "\n "
[*posts].each {|x| xml << x.to_diaspora_xml}
xml += ""
xml += ""
end
end
end
end
end