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/system_hooks_service.rb')
-rw-r--r--app/services/system_hooks_service.rb61
1 files changed, 5 insertions, 56 deletions
diff --git a/app/services/system_hooks_service.rb b/app/services/system_hooks_service.rb
index 53e810035c5..2a2053cb912 100644
--- a/app/services/system_hooks_service.rb
+++ b/app/services/system_hooks_service.rb
@@ -1,8 +1,6 @@
# frozen_string_literal: true
class SystemHooksService
- BUILDER_DRIVEN_EVENT_DATA_AVAILABLE_FOR_CLASSES = [GroupMember, Group, ProjectMember, User].freeze
-
def execute_hooks_for(model, event)
data = build_event_data(model, event)
@@ -12,7 +10,7 @@ class SystemHooksService
end
def execute_hooks(data, hooks_scope = :all)
- SystemHook.hooks_for(hooks_scope).find_each do |hook|
+ SystemHook.executable.hooks_for(hooks_scope).find_each do |hook|
hook.async_execute(data, 'system_hooks')
end
@@ -22,59 +20,6 @@ class SystemHooksService
private
def build_event_data(model, event)
- # return entire event data from its builder class, if available.
- return builder_driven_event_data(model, event) if builder_driven_event_data_available?(model)
-
- data = {
- event_name: build_event_name(model, event),
- created_at: model.created_at&.xmlschema,
- updated_at: model.updated_at&.xmlschema
- }
-
- case model
- when Key
- data.merge!(
- key: model.key,
- id: model.id
- )
-
- if model.user
- data[:username] = model.user.username
- end
- when Project
- data.merge!(project_data(model))
-
- if event == :rename || event == :transfer
- data[:old_path_with_namespace] = model.old_path_with_namespace
- end
- end
-
- data
- end
-
- def build_event_name(model, event)
- "#{model.class.name.downcase}_#{event}"
- end
-
- def project_data(model)
- owner = model.owner
-
- {
- name: model.name,
- path: model.path,
- path_with_namespace: model.full_path,
- project_id: model.id,
- owner_name: owner.name,
- owner_email: owner.respond_to?(:email) ? owner.email : "",
- project_visibility: model.visibility.downcase
- }
- end
-
- def builder_driven_event_data_available?(model)
- model.class.in?(BUILDER_DRIVEN_EVENT_DATA_AVAILABLE_FOR_CLASSES)
- end
-
- def builder_driven_event_data(model, event)
builder_class = case model
when GroupMember
Gitlab::HookData::GroupMemberBuilder
@@ -84,6 +29,10 @@ class SystemHooksService
Gitlab::HookData::ProjectMemberBuilder
when User
Gitlab::HookData::UserBuilder
+ when Project
+ Gitlab::HookData::ProjectBuilder
+ when Key
+ Gitlab::HookData::KeyBuilder
end
builder_class.new(model).build(event)