Commit 25951b914619a9e056122f0c39ce64e4afe453d8

Authored by Dmitriy Zaporozhets
1 parent 0687ecb6

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>
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 &lt; ActiveRecord::Base @@ -298,8 +298,10 @@ class Project &lt; 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 &lt; WebHook @@ -15,4 +15,8 @@ class ProjectHook &lt; 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