federated generators take a user

This commit is contained in:
Dennis Collinson 2012-02-09 18:06:02 -08:00
parent 5e26a7e6bb
commit 04bd507025
4 changed files with 19 additions and 19 deletions

View file

@ -1,19 +1,19 @@
module User::SocialActions
def comment!(post, text, opts={})
participations.where(:target_id => post).first || participate!(post)
Comment::Generator.new(self.person, post, text).create!(opts)
def comment!(target, text, opts={})
participations.where(:target_id => target).first || participate!(target)
Comment::Generator.new(self, target, text).create!(opts)
end
def participate!(target, opts={})
Participation::Generator.new(self.person, target).create!(opts)
Participation::Generator.new(self, target).create!(opts)
end
def like!(target, opts={})
participations.where(:target_id => target).first || participate!(target)
Like::Generator.new(self.person, target).create!(opts)
Like::Generator.new(self, target).create!(opts)
end
def build_comment(options={})
Comment::Generator.new(self.person, options.delete(:post), options.delete(:text)).build(options)
Comment::Generator.new(self, options.delete(:post), options.delete(:text)).build(options)
end
end

View file

@ -1,28 +1,28 @@
module Federated
class Generator
def initialize(person, target)
@person = person
def initialize(user, target)
@user = user
@target = target
end
def build(options={})
options.merge!(relayable_options)
relayable = self.class.federated_class.new(options.merge(:author_id => @person.id))
relayable.set_guid
relayable.initialize_signatures
relayable
end
def create!(options={})
relayable = build(options)
if relayable.save
Postzord::Dispatcher.defer_build_and_post(@person, relayable)
Postzord::Dispatcher.defer_build_and_post(@user, relayable)
relayable
else
false
end
end
def build(options={})
options.merge!(relayable_options)
relayable = self.class.federated_class.new(options.merge(:author_id => @user.person.id))
relayable.set_guid
relayable.initialize_signatures
relayable
end
protected
def relayable_options

View file

@ -90,7 +90,7 @@ describe Like do
@object_on_remote_parent = @local_luke.like!(@remote_parent)
end
let(:build_object) { Like::Generator.new(alice.person, @status).build }
let(:build_object) { Like::Generator.new(alice, @status).build }
it_should_behave_like 'it is relayable'
end
end

View file

@ -16,7 +16,7 @@ describe Participation do
@object_on_remote_parent = @local_luke.participate!(@remote_parent)
end
let(:build_object) { Participation::Generator.new(alice.person, @status).build }
let(:build_object) { Participation::Generator.new(alice, @status).build }
it_should_behave_like 'it is relayable'
end