Commit 25951b914619a9e056122f0c39ce64e4afe453d8
1 parent
0687ecb6
Exists in
master
and in
4 other branches
Prepare ProjectHooks to work with issues and merge_requests
* Add event scopes to ProjectHook * Added Issuable#to_hook_data * Project#execute_hooks now accept hook filter as argument Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
3 changed files
with
15 additions
and
2 deletions
Show diff stats
app/models/concerns/issuable.rb
@@ -111,4 +111,11 @@ module Issuable | @@ -111,4 +111,11 @@ module Issuable | ||
111 | end | 111 | end |
112 | users.concat(mentions.reduce([], :|)).uniq | 112 | users.concat(mentions.reduce([], :|)).uniq |
113 | end | 113 | end |
114 | + | ||
115 | + def to_hook_data | ||
116 | + { | ||
117 | + object_kind: self.class.name.underscore, | ||
118 | + object_attributes: self.attributes | ||
119 | + } | ||
120 | + end | ||
114 | end | 121 | end |
app/models/project.rb
@@ -298,8 +298,10 @@ class Project < ActiveRecord::Base | @@ -298,8 +298,10 @@ class Project < ActiveRecord::Base | ||
298 | ProjectTransferService.new.transfer(self, new_namespace) | 298 | ProjectTransferService.new.transfer(self, new_namespace) |
299 | end | 299 | end |
300 | 300 | ||
301 | - def execute_hooks(data) | ||
302 | - hooks.each { |hook| hook.async_execute(data) } | 301 | + def execute_hooks(data, hooks_scope = :push_hooks) |
302 | + hooks.send(hooks_scope).each do |hook| | ||
303 | + hook.async_execute(data) | ||
304 | + end | ||
303 | end | 305 | end |
304 | 306 | ||
305 | def execute_services(data) | 307 | def execute_services(data) |
app/models/project_hook.rb
@@ -15,4 +15,8 @@ class ProjectHook < WebHook | @@ -15,4 +15,8 @@ class ProjectHook < WebHook | ||
15 | belongs_to :project | 15 | belongs_to :project |
16 | 16 | ||
17 | attr_accessible :push_events, :issues_events, :merge_requests_events | 17 | attr_accessible :push_events, :issues_events, :merge_requests_events |
18 | + | ||
19 | + scope :push_hooks, -> { where(push_events: true) } | ||
20 | + scope :issue_hooks, -> { where(issues_events: true) } | ||
21 | + scope :merge_request_hooks, -> { where(merge_requests_events: true) } | ||
18 | end | 22 | end |