Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/snippets/create_service.rb')
-rw-r--r--app/services/snippets/create_service.rb22
1 files changed, 18 insertions, 4 deletions
diff --git a/app/services/snippets/create_service.rb b/app/services/snippets/create_service.rb
index 0881be73eaf..802bfd813dc 100644
--- a/app/services/snippets/create_service.rb
+++ b/app/services/snippets/create_service.rb
@@ -3,20 +3,32 @@
module Snippets
class CreateService < Snippets::BaseService
def execute
+ # NOTE: disable_spam_action_service can be removed when the ':snippet_spam' feature flag is removed.
+ disable_spam_action_service = params.delete(:disable_spam_action_service) == true
+ @request = params.delete(:request)
+ @spam_params = Spam::SpamActionService.filter_spam_params!(params)
+
@snippet = build_from_params
return invalid_params_error(@snippet) unless valid_params?
- unless visibility_allowed?(@snippet, @snippet.visibility_level)
- return forbidden_visibility_error(@snippet)
+ unless visibility_allowed?(snippet, snippet.visibility_level)
+ return forbidden_visibility_error(snippet)
end
@snippet.author = current_user
- spam_check(@snippet, current_user, action: :create)
+ unless disable_spam_action_service
+ Spam::SpamActionService.new(
+ spammable: @snippet,
+ request: request,
+ user: current_user,
+ action: :create
+ ).execute(spam_params: spam_params)
+ end
if save_and_commit
- UserAgentDetailService.new(@snippet, @request).create
+ UserAgentDetailService.new(@snippet, request).create
Gitlab::UsageDataCounters::SnippetCounter.count(:create)
move_temporary_files
@@ -29,6 +41,8 @@ module Snippets
private
+ attr_reader :snippet, :request, :spam_params
+
def build_from_params
if project
project.snippets.build(create_params)