diff --git a/lib/diaspora/federation/dispatcher.rb b/lib/diaspora/federation/dispatcher.rb index f68ce9e8e..4950cfcb9 100644 --- a/lib/diaspora/federation/dispatcher.rb +++ b/lib/diaspora/federation/dispatcher.rb @@ -27,7 +27,8 @@ module Diaspora attr_reader :sender, :object, :opts def deliver_to_services - # TODO: pubsubhubbub, relay, social-network-services + # TODO: pubsubhubbub, relay + deliver_to_user_services end def deliver_to_subscribers @@ -44,6 +45,27 @@ module Diaspora def deliver_to_remote(people) # TODO: send to remote hosts end + + def deliver_to_user_services + services.each do |service| + case object + when StatusMessage + Workers::PostToService.perform_async(service.id, object.id, opts[:url]) + when Retraction + Workers::DeletePostFromService.perform_async(service.id, object.target.id) + end + end + end + + def services + if opts[:services] + opts[:services] + elsif opts[:service_types] + sender.services.where(type: opts[:service_types]) + else + [] + end + end end end end