create public and private dispatcher

This commit is contained in:
Benjamin Neff 2016-05-23 01:48:25 +02:00
parent 7184d4334e
commit f53b5ffe6b
4 changed files with 38 additions and 4 deletions

View file

@ -15,5 +15,6 @@ module Diaspora
end
end
require "diaspora/federation/dispatcher"
require "diaspora/federation/entities"
require "diaspora/federation/receive"

View file

@ -10,7 +10,11 @@ module Diaspora
end
def self.build(sender, object, opts={})
new(sender, object, opts)
if object.try(:public?)
Public.new(sender, object, opts)
else
Private.new(sender, object, opts)
end
end
def self.defer_dispatch(sender, object, opts={})
@ -27,7 +31,6 @@ module Diaspora
attr_reader :sender, :object, :opts
def deliver_to_services
# TODO: pubsubhubbub, relay
deliver_to_user_services
end
@ -44,8 +47,8 @@ module Diaspora
Workers::ReceiveLocal.perform_async(obj.class.to_s, obj.id, people.map(&:owner_id))
end
def deliver_to_remote(people)
# TODO: send to remote hosts
def deliver_to_remote(_people)
raise NotImplementedError, "This is an abstract base method. Implement in your subclass."
end
def deliver_to_user_services
@ -71,3 +74,6 @@ module Diaspora
end
end
end
require "diaspora/federation/dispatcher/private"
require "diaspora/federation/dispatcher/public"

View file

@ -0,0 +1,11 @@
module Diaspora
module Federation
class Dispatcher
class Private < Dispatcher
def deliver_to_remote(people)
# TODO
end
end
end
end
end

View file

@ -0,0 +1,16 @@
module Diaspora
module Federation
class Dispatcher
class Public < Dispatcher
def deliver_to_services
# TODO: pubsubhubbub, relay
super
end
def deliver_to_remote(people)
# TODO
end
end
end
end
end