diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index 9cf07bf90..a8881a31e 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -1,5 +1,6 @@ require_dependency 'new_post_manager' require_dependency 'email/html_cleaner' +require_dependency 'post_action_creator' module Email @@ -245,7 +246,7 @@ module Email end def create_post_action(email_log, type) - PostAction.act(email_log.user, email_log.post, type) + PostActionCreator.new(email_log.user, email_log.post).perform(type) rescue PostAction::AlreadyActed => e raise InvalidPostAction.new(e) end diff --git a/lib/post_action_creator.rb b/lib/post_action_creator.rb new file mode 100644 index 000000000..3d84b44d9 --- /dev/null +++ b/lib/post_action_creator.rb @@ -0,0 +1,20 @@ +# creates post actions based on a post and a user +class PostActionCreator + + def initialize(user, post) + @user = user + @post = post + end + + def perform(action) + guardian.ensure_post_can_act!(@post, action, taken_actions: PostAction.counts_for([@post], @user)[@post.id]) + PostAction.act(@user, @post, action) + end + + private + + def guardian + @guardian ||= Guardian.new(@user) + end + +end