summaryrefslogtreecommitdiff
path: root/app/models/concerns
diff options
context:
space:
mode:
authorPatricio Cano <suprnova32@gmail.com>2016-07-29 23:18:32 -0500
committerPatricio Cano <suprnova32@gmail.com>2016-08-15 13:18:15 -0500
commit64ab2b3d9f10366249c03a6bcf5e8b1d20010d8f (patch)
tree80f4e4b496c55c8aacfc37ee361330b015d9fad4 /app/models/concerns
parent722fc84e3d4785fb3a9db5f1c7d2aabad22e8e01 (diff)
downloadgitlab-ce-64ab2b3d9f10366249c03a6bcf5e8b1d20010d8f.tar.gz
Refactored spam related code even further
- Removed unnecessary column from `SpamLog` - Moved creation of SpamLogs out of its own service and into SpamCheckService - Simplified code in SpamCheckService. - Moved move spam related code into Spammable concern
Diffstat (limited to 'app/models/concerns')
-rw-r--r--app/models/concerns/spammable.rb44
1 files changed, 28 insertions, 16 deletions
diff --git a/app/models/concerns/spammable.rb b/app/models/concerns/spammable.rb
index bbf6a3e0be3..5c75275b6e2 100644
--- a/app/models/concerns/spammable.rb
+++ b/app/models/concerns/spammable.rb
@@ -28,26 +28,42 @@ module Spammable
end
end
- def submit_ham
- return unless akismet_enabled? && can_be_submitted?
- ham!(user_agent_detail, spammable_text, creator)
- end
-
def submit_spam
return unless akismet_enabled? && can_be_submitted?
- spam!(user_agent_detail, spammable_text, creator)
+ spam!(user_agent_detail, spammable_text, owner)
end
- def spam?(env, user)
- is_spam?(env, user, spammable_text)
+ def spam_detected?(env)
+ @spam = is_spam?(env, owner, spammable_text)
end
- def spam_detected?
+ def spam?
@spam
end
def check_for_spam
- self.errors.add(:base, "Your #{self.class.name.underscore} has been recognized as spam and has been discarded.") if spam_detected?
+ self.errors.add(:base, "Your #{self.class.name.underscore} has been recognized as spam and has been discarded.") if spam?
+ end
+
+ def owner_id
+ if self.respond_to?(:author_id)
+ self.author_id
+ elsif self.respond_to?(:creator_id)
+ self.creator_id
+ end
+ end
+
+ # Override this method if an additional check is needed before calling Akismet
+ def check_for_spam?
+ akismet_enabled?
+ end
+
+ def spam_title
+ raise 'Implement in included model!'
+ end
+
+ def spam_description
+ raise 'Implement in included model!'
end
private
@@ -60,11 +76,7 @@ module Spammable
result.reject(&:blank?).join("\n")
end
- def creator
- if self.author_id
- User.find(self.author_id)
- elsif self.creator_id
- User.find(self.creator_id)
- end
+ def owner
+ User.find(owner_id)
end
end