skipping receive process for incoming local posts, calling receive_object directly
This commit is contained in:
parent
d2199fa1eb
commit
1465024f10
4 changed files with 64 additions and 4 deletions
11
app/models/jobs/receive_local.rb
Normal file
11
app/models/jobs/receive_local.rb
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
module Jobs
|
||||
class ReceiveLocal
|
||||
@queue = :receive_local
|
||||
def self.perform(user_id, person_id, object_type, object_id)
|
||||
user = User.find(user_id)
|
||||
person = Person.find(person_id)
|
||||
object = eval("#{object_type}.first(:id => \"#{object_id}\")")
|
||||
user.receive_object(object, person)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -189,7 +189,6 @@ class User
|
|||
|
||||
def push_to_aspects(post, aspects)
|
||||
#send to the aspects
|
||||
#
|
||||
target_aspect_ids = aspects.map {|a| a.id}
|
||||
|
||||
target_contacts = Contact.all(:aspect_ids.in => target_aspect_ids, :pending => false)
|
||||
|
|
@ -211,7 +210,12 @@ class User
|
|||
# calling nil? performs a necessary evaluation.
|
||||
if person.owner_id
|
||||
Rails.logger.info("event=push_to_person route=local sender=#{self.diaspora_handle} recipient=#{person.diaspora_handle} payload_type=#{post.class}")
|
||||
Resque.enqueue(Jobs::Receive, person.owner_id, post.to_diaspora_xml, self.person.id)
|
||||
|
||||
if post.is_a?(Post) || post.is_a?(Comment)
|
||||
Resque.enqueue(Jobs::ReceiveLocal, person.owner_id, self.person.id, post.class.to_s, post.id)
|
||||
else
|
||||
Resque.enqueue(Jobs::Receive, person.owner_id, post.to_diaspora_xml, self.person.id)
|
||||
end
|
||||
else
|
||||
xml = salmon.xml_for person
|
||||
Rails.logger.info("event=push_to_person route=remote sender=#{self.diaspora_handle} recipient=#{person.diaspora_handle} payload_type=#{post.class}")
|
||||
|
|
|
|||
39
spec/models/jobs/receive_local.rb
Normal file
39
spec/models/jobs/receive_local.rb
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Jobs::ReceiveLocal do
|
||||
before do
|
||||
@user1 = make_user
|
||||
@user2 = make_user
|
||||
@status = Factory(:status_message)
|
||||
@status_type = @status.class.to_s
|
||||
|
||||
User.stub(:find){ |id|
|
||||
if id == @user1.id
|
||||
@user1
|
||||
else
|
||||
nil
|
||||
end
|
||||
}
|
||||
|
||||
Person.stub(:find){ |id|
|
||||
if id == @user2.person.id
|
||||
@user2.person
|
||||
else
|
||||
nil
|
||||
end
|
||||
}
|
||||
|
||||
StatusMessage.stub(:find){ |id|
|
||||
if id == @status.id
|
||||
@status
|
||||
else
|
||||
nil
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
it 'calls receive_object' do
|
||||
@user1.should_receive(:receive_object).with(@status, @user2.person).and_return(true)
|
||||
Jobs::ReceiveLocal.perform(@user1.id, @user2.person.id, @status_type, @status.id)
|
||||
end
|
||||
end
|
||||
|
|
@ -129,6 +129,7 @@ describe User do
|
|||
let!(:aspect4) { user4.aspects.create(:name => 'heroes') }
|
||||
|
||||
let!(:post) { user.build_post :status_message, :message => "hey" }
|
||||
let!(:request) { Request.instantiate(:from => user3.person, :to => user4.person) }
|
||||
|
||||
before do
|
||||
connect_users(user, aspect, user2, aspect2)
|
||||
|
|
@ -174,8 +175,13 @@ describe User do
|
|||
@salmon = user.salmon(post)
|
||||
@xml = post.to_diaspora_xml
|
||||
end
|
||||
it 'enqueues receive for local contacts' do
|
||||
Resque.should_receive(:enqueue).with(Jobs::Receive, user2.id, @xml, user.person.id)
|
||||
it 'enqueues receive for requests and retractions for local contacts' do
|
||||
xml = request.to_diaspora_xml
|
||||
Resque.should_receive(:enqueue).with(Jobs::Receive, user2.id, xml, user.person.id)
|
||||
user.push_to_person(@salmon, request, user2.person)
|
||||
end
|
||||
it 'enqueues receive for requests and retractions for local contacts' do
|
||||
Resque.should_receive(:enqueue).with(Jobs::ReceiveLocal, user2.id, user.person.id, post.class.to_s, post.id)
|
||||
user.push_to_person(@salmon, post, user2.person)
|
||||
end
|
||||
it 'calls the MessageHandler for remote contacts' do
|
||||
|
|
|
|||
Loading…
Reference in a new issue