summaryrefslogtreecommitdiff
path: root/app/services/base_service.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/base_service.rb
parentdfc92d081ea0332d69c8aca2f0e745cb48ae5e6d (diff)
downloadgitlab-ce-9f46488805e86b1bc341ea1620b866016c2ce5ed.tar.gz
Add latest changes from gitlab-org/gitlab@13-0-stable-ee
Diffstat (limited to 'app/services/base_service.rb')
-rw-r--r--app/services/base_service.rb73
1 files changed, 10 insertions, 63 deletions
diff --git a/app/services/base_service.rb b/app/services/base_service.rb
index bc0b968f516..b4c4b6980a8 100644
--- a/app/services/base_service.rb
+++ b/app/services/base_service.rb
@@ -1,7 +1,16 @@
# frozen_string_literal: true
+# This is the original root class for service related classes,
+# and due to historical reason takes a project as scope.
+# Later separate base classes for different scopes will be created,
+# and existing service will use these one by one.
+# After all are migrated, we can remove this class.
+#
+# TODO: New services should consider inheriting from
+# BaseContainerService, or create new base class:
+# https://gitlab.com/gitlab-org/gitlab/-/issues/216672
class BaseService
- include Gitlab::Allowable
+ include BaseServiceUtility
attr_accessor :project, :current_user, :params
@@ -9,67 +18,5 @@ class BaseService
@project, @current_user, @params = project, user, params.dup
end
- def notification_service
- NotificationService.new
- end
-
- def event_service
- EventCreateService.new
- end
-
- def todo_service
- TodoService.new
- end
-
- def log_info(message)
- Gitlab::AppLogger.info message
- end
-
- def log_error(message)
- Gitlab::AppLogger.error message
- end
-
- def system_hook_service
- SystemHooksService.new
- end
-
delegate :repository, to: :project
-
- # 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