From b5247e775bc47a967b408181f944f48826176acc Mon Sep 17 00:00:00 2001 From: Ryunosuke SATO Date: Sat, 29 Nov 2014 14:07:58 +0900 Subject: [PATCH] Add 'url' to merge request webhook When a webhook for merge requests is triggered, it should also return the resource URL. --- app/services/merge_requests/base_service.rb | 2 ++ doc/web_hooks/web_hooks.md | 1 + lib/gitlab/url_builder.rb | 9 +++++++++ spec/lib/gitlab/url_builder_spec.rb | 9 +++++++++ 4 files changed, 21 insertions(+) diff --git a/app/services/merge_requests/base_service.rb b/app/services/merge_requests/base_service.rb index 7f3421b8e4b..c05f59bfbea 100644 --- a/app/services/merge_requests/base_service.rb +++ b/app/services/merge_requests/base_service.rb @@ -8,6 +8,8 @@ module MergeRequests def execute_hooks(merge_request) if merge_request.project hook_data = merge_request.to_hook_data(current_user) + url = Gitlab::UrlBuilder.new(:merge_request).build(merge_request.id) + hook_data[:object_attributes].merge!(url: url) merge_request.project.execute_hooks(hook_data, :merge_request_hooks) end end diff --git a/doc/web_hooks/web_hooks.md b/doc/web_hooks/web_hooks.md index f19517c0f18..81ad5e92595 100644 --- a/doc/web_hooks/web_hooks.md +++ b/doc/web_hooks/web_hooks.md @@ -119,6 +119,7 @@ Triggered when a new merge request is created or an existing merge request was u "merge_status": "unchecked", "target_project_id": 14, "iid": 1, + "url": "http://example.com/awesome_space/awesome_project/merge_requests/1", "description": "", "source": { "name": "awesome_project", diff --git a/lib/gitlab/url_builder.rb b/lib/gitlab/url_builder.rb index 877488d8471..25f310a9b63 100644 --- a/lib/gitlab/url_builder.rb +++ b/lib/gitlab/url_builder.rb @@ -10,6 +10,8 @@ module Gitlab case @type when :issue issue_url(id) + when :merge_request + merge_request_url(id) end end @@ -21,5 +23,12 @@ module Gitlab project_id: issue.project, host: Gitlab.config.gitlab['url']) end + + def merge_request_url(id) + merge_request = MergeRequest.find(id) + project_merge_request_url(id: merge_request.iid, + project_id: merge_request.project, + host: Gitlab.config.gitlab['url']) + end end end diff --git a/spec/lib/gitlab/url_builder_spec.rb b/spec/lib/gitlab/url_builder_spec.rb index eb47bee8336..afa0464ff24 100644 --- a/spec/lib/gitlab/url_builder_spec.rb +++ b/spec/lib/gitlab/url_builder_spec.rb @@ -8,4 +8,13 @@ describe Gitlab::UrlBuilder do expect(url).to eq "#{Settings.gitlab['url']}/#{issue.project.to_param}/issues/#{issue.iid}" end end + + describe 'When asking for a merge request' do + it 'returns the merge request url' do + merge_request = create(:merge_request) + url = Gitlab::UrlBuilder.new(:merge_request).build(merge_request.id) + expect(url).to eq Settings.gitlab['url'] + + "/#{merge_request.project.to_param}/merge_requests/#{merge_request.iid}" + end + end end -- GitLab