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:
authorAndrew8xx8 <avk@8xx8.ru>2013-02-20 14:53:15 +0400
committerAndrew8xx8 <avk@8xx8.ru>2013-02-20 14:53:15 +0400
commitaa1780d03c7ceb916c2e122b841d3d4ebc5ce597 (patch)
treef0e0ebd956199cc5d81c4e63e14555a4e46bb6a9 /app/services/system_hooks_service.rb
parent468c8c5f0a66a9ebf1489926ba32c19db71d821a (diff)
System hooks execution moved to System hook service
Diffstat (limited to 'app/services/system_hooks_service.rb')
-rw-r--r--app/services/system_hooks_service.rb55
1 files changed, 55 insertions, 0 deletions
diff --git a/app/services/system_hooks_service.rb b/app/services/system_hooks_service.rb
new file mode 100644
index 00000000000..1d53f3baf33
--- /dev/null
+++ b/app/services/system_hooks_service.rb
@@ -0,0 +1,55 @@
+class SystemHooksService
+ def self.execute_hooks_for(model, event)
+ execute_hooks(build_event_data(model, event))
+ end
+
+ private
+
+ def self.execute_hooks(data)
+ SystemHook.all.each do |sh|
+ sh.async_execute data
+ end
+ end
+
+ def self.build_event_data(model, event)
+ data = {
+ event_name: build_event_name(model, event),
+ created_at: model.created_at
+ }
+
+ case model
+ when Project
+ data.merge!({
+ name: model.name,
+ path: model.path,
+ project_id: model.id,
+ owner_name: model.owner.name,
+ owner_email: model.owner.email
+ })
+ when User
+ data.merge!({
+ name: model.name,
+ email: model.email
+ })
+ when UsersProject
+ data.merge!({
+ project_name: model.project.name,
+ project_path: model.project.path,
+ project_id: model.project_id,
+ user_name: model.user.name,
+ user_email: model.user.email,
+ project_access: model.repo_access_human
+ })
+ end
+ end
+
+ def self.build_event_name(model, event)
+ case model
+ when UsersProject
+ return "user_add_to_team" if event == :create
+ return "user_remove_from_team" if event == :destroy
+ else
+ "#{model.class.name.downcase}_#{event.to_s}"
+ end
+ end
+end