Commit 1c9d2e39 authored by Kirill Zaitsev's avatar Kirill Zaitsev

Hook attributes

parent e2073f28
...@@ -88,6 +88,21 @@ class Commit ...@@ -88,6 +88,21 @@ class Commit
description.present? description.present?
end end
def hook_attrs(project)
path_with_namespace = project.path_with_namespace
{
id: id,
message: safe_message,
timestamp: committed_date.xmlschema,
url: "#{Gitlab.config.gitlab.url}/#{path_with_namespace}/commit/#{id}",
author: {
name: author_name,
email: author_email
}
}
end
# Discover issues should be closed when this commit is pushed to a project's # Discover issues should be closed when this commit is pushed to a project's
# default branch. # default branch.
def closes_issues project def closes_issues project
......
...@@ -134,7 +134,7 @@ module Issuable ...@@ -134,7 +134,7 @@ module Issuable
def to_hook_data def to_hook_data
{ {
object_kind: self.class.name.underscore, object_kind: self.class.name.underscore,
object_attributes: self.attributes object_attributes: hook_attrs
} }
end end
......
...@@ -48,6 +48,10 @@ class Issue < ActiveRecord::Base ...@@ -48,6 +48,10 @@ class Issue < ActiveRecord::Base
state :closed state :closed
end end
def hook_attrs
attributes
end
# Mentionable overrides. # Mentionable overrides.
def gfm_reference def gfm_reference
......
...@@ -211,6 +211,20 @@ class MergeRequest < ActiveRecord::Base ...@@ -211,6 +211,20 @@ class MergeRequest < ActiveRecord::Base
Gitlab::Satellite::MergeAction.new(current_user, self).format_patch Gitlab::Satellite::MergeAction.new(current_user, self).format_patch
end end
def hook_attrs
attrs = {
source: source_project.hook_attrs,
target: target_project.hook_attrs,
last_commit: nil
}
unless last_commit.nil?
attrs.merge!(last_commit: last_commit.hook_attrs(source_project))
end
attributes.merge!(attrs)
end
def for_fork? def for_fork?
target_project != source_project target_project != source_project
end end
......
...@@ -544,6 +544,16 @@ class Project < ActiveRecord::Base ...@@ -544,6 +544,16 @@ class Project < ActiveRecord::Base
end end
end end
def hook_attrs
{
name: name,
ssh_url: ssh_url_to_repo,
http_url: http_url_to_repo,
namespace: namespace.name,
visibility_level: visibility_level
}
end
# Reset events cache related to this project # Reset events cache related to this project
# #
# Since we do cache @event we need to reset cache in special cases: # Since we do cache @event we need to reset cache in special cases:
......
...@@ -150,16 +150,7 @@ class GitPushService ...@@ -150,16 +150,7 @@ class GitPushService
# will be passed as post receive hook data. # will be passed as post receive hook data.
# #
push_commits_limited.each do |commit| push_commits_limited.each do |commit|
data[:commits] << { data[:commits] << commit.hook_attrs(project)
id: commit.id,
message: commit.safe_message,
timestamp: commit.committed_date.xmlschema,
url: "#{Gitlab.config.gitlab.url}/#{project.path_with_namespace}/commit/#{commit.id}",
author: {
name: commit.author_name,
email: commit.author_email
}
}
end end
data data
......
...@@ -109,7 +109,31 @@ Triggered when a new merge request is created or an existing merge request was u ...@@ -109,7 +109,31 @@ Triggered when a new merge request is created or an existing merge request was u
"merge_status": "unchecked", "merge_status": "unchecked",
"target_project_id": 14, "target_project_id": 14,
"iid": 1, "iid": 1,
"description": "" "description": "",
"source": {
"name": "awesome_project",
"ssh_url": "ssh://git@example.com/awesome_space/awesome_project.git",
"http_url": "http://example.com/awesome_space/awesome_project.git",
"visibility_level": 20,
"namespace": "awesome_space"
},
"target": {
"name": "awesome_project",
"ssh_url": "ssh://git@example.com/awesome_space/awesome_project.git",
"http_url": "http://example.com/awesome_space/awesome_project.git",
"visibility_level": 20,
"namespace": "awesome_space"
},
"last_commit": {
"id": "da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"message": "fixed readme",
"timestamp": "2012-01-03T23:36:29+02:00",
"url": "http://example.com/awesome_space/awesome_project/commits/da1560886d4f094c3e6c9ef40349f7d38b5d27d7",
"author": {
"name": "GitLab dev user",
"email": "gitlabdev@dv6700.(none)"
}
}
} }
} }
``` ```
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment