summaryrefslogtreecommitdiff
path: root/app/services/concerns/base_service_utility.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-05-20 14:34:42 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-05-20 14:34:42 +0000
commit9f46488805e86b1bc341ea1620b866016c2ce5ed (patch)
treef9748c7e287041e37d6da49e0a29c9511dc34768 /app/services/concerns/base_service_utility.rb
parentdfc92d081ea0332d69c8aca2f0e745cb48ae5e6d (diff)
downloadgitlab-ce-9f46488805e86b1bc341ea1620b866016c2ce5ed.tar.gz
Add latest changes from gitlab-org/gitlab@13-0-stable-ee
Diffstat (limited to 'app/services/concerns/base_service_utility.rb')
-rw-r--r--app/services/concerns/base_service_utility.rb72
1 files changed, 72 insertions, 0 deletions
diff --git a/app/services/concerns/base_service_utility.rb b/app/services/concerns/base_service_utility.rb
new file mode 100644
index 00000000000..70b223a0289
--- /dev/null
+++ b/app/services/concerns/base_service_utility.rb
@@ -0,0 +1,72 @@
+# frozen_string_literal: true
+
+module BaseServiceUtility
+ extend ActiveSupport::Concern
+ include Gitlab::Allowable
+
+ ### Convenience service methods
+
+ def notification_service
+ NotificationService.new
+ end
+
+ def event_service
+ EventCreateService.new
+ end
+
+ def todo_service
+ TodoService.new
+ end
+
+ def system_hook_service
+ SystemHooksService.new
+ end
+
+ # Logging
+
+ def log_info(message)
+ Gitlab::AppLogger.info message
+ end
+
+ def log_error(message)
+ Gitlab::AppLogger.error message
+ end
+
+ # Add an error to the specified model for restricted visibility levels
+ def deny_visibility_level(model, denied_visibility_level = nil)
+ denied_visibility_level ||= model.visibility_level
+
+ level_name = Gitlab::VisibilityLevel.level_name(denied_visibility_level).downcase
+
+ model.errors.add(:visibility_level, "#{level_name} has been restricted by your GitLab administrator")
+ end
+
+ def visibility_level
+ params[:visibility].is_a?(String) ? Gitlab::VisibilityLevel.level_value(params[:visibility]) : params[:visibility_level]
+ end
+
+ private
+
+ # Return a Hash with an `error` status
+ #
+ # message - Error message to include in the Hash
+ # http_status - Optional HTTP status code override (default: nil)
+ # pass_back - Additional attributes to be included in the resulting Hash
+ def error(message, http_status = nil, pass_back: {})
+ result = {
+ message: message,
+ status: :error
+ }.reverse_merge(pass_back)
+
+ result[:http_status] = http_status if http_status
+ result
+ end
+
+ # Return a Hash with a `success` status
+ #
+ # pass_back - Additional attributes to be included in the resulting Hash
+ def success(pass_back = {})
+ pass_back[:status] = :success
+ pass_back
+ end
+end