separating object receiving in user#receive
This commit is contained in:
parent
7e568db032
commit
d5cc0ed6dc
2 changed files with 36 additions and 16 deletions
|
|
@ -38,33 +38,41 @@ module Diaspora
|
|||
if object.is_a?(Comment) || object.is_a?(Post)|| object.is_a?(Request) || object.is_a?(Retraction) || object.is_a?(Profile)
|
||||
e = EMWebfinger.new(object.diaspora_handle)
|
||||
|
||||
e.on_person { |person|
|
||||
e.on_person do |person|
|
||||
|
||||
if person.class == Person
|
||||
object.person = person if object.respond_to? :person=
|
||||
|
||||
if object.is_a? Request
|
||||
return receive_request object, person
|
||||
end
|
||||
|
||||
raise "Not friends with that person" unless self.contact_for(salmon_author)
|
||||
|
||||
if object.is_a?(Comment)
|
||||
receive_comment object
|
||||
elsif object.is_a?(Retraction)
|
||||
receive_retraction object
|
||||
elsif object.is_a?(Profile)
|
||||
receive_profile object, person
|
||||
unless object.is_a?(Request) || self.contact_for(salmon_author)
|
||||
raise "Not friends with that person"
|
||||
else
|
||||
receive_post object
|
||||
|
||||
return receive_object(object,person)
|
||||
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
end
|
||||
else
|
||||
raise "you messed up"
|
||||
end
|
||||
end
|
||||
|
||||
def receive_object(object,person)
|
||||
if object.is_a?(Request)
|
||||
receive_request object, person
|
||||
elsif object.is_a?(Profile)
|
||||
receive_profile object, person
|
||||
|
||||
elsif object.is_a?(Comment)
|
||||
receive_comment object
|
||||
elsif object.is_a?(Retraction)
|
||||
receive_retraction object
|
||||
else
|
||||
receive_post object
|
||||
end
|
||||
end
|
||||
|
||||
def receive_retraction retraction
|
||||
if retraction.type == 'Person'
|
||||
unless retraction.person.id.to_s == retraction.post_id.to_s
|
||||
|
|
|
|||
|
|
@ -97,8 +97,9 @@ describe User do
|
|||
|
||||
context 'dispatching' do
|
||||
let!(:user3) { make_user }
|
||||
let!(:aspect3) { user3.aspects.create(:name => 'heroes') }
|
||||
let!(:user4) { make_user }
|
||||
|
||||
let!(:aspect3) { user3.aspects.create(:name => 'heroes') }
|
||||
let!(:aspect4) { user4.aspects.create(:name => 'heroes') }
|
||||
|
||||
let!(:post) { user.build_post :status_message, :message => "hey" }
|
||||
|
|
@ -128,6 +129,17 @@ describe User do
|
|||
user.should_receive(:push_to_person).twice
|
||||
user.push_to_people(post, [user2.person, user3.person])
|
||||
end
|
||||
|
||||
it 'does not use the queue for local transfer' do
|
||||
User::QUEUE.should_receive(:add_post_request).twice
|
||||
|
||||
remote_person = user4.person
|
||||
remote_person.owner_id = nil
|
||||
remote_person.save
|
||||
|
||||
user.push_to_people(post, [user2.person, user3.person, remote_person])
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue