From b4963e9dda1ced7c219f24172e9fa4c8a5076b69 Mon Sep 17 00:00:00 2001
From: Kirill Zaitsev <kirik910@gmail.com>
Date: Fri, 19 Sep 2014 12:23:18 +0400
Subject: [PATCH] Add tag_push_events to project hook api

---
 app/models/hooks/web_hook.rb |  1 +
 doc/api/projects.md          |  2 ++
 lib/api/entities.rb          |  3 ++-
 lib/api/project_hooks.rb     | 16 ++++++++++++++--
 4 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/app/models/hooks/web_hook.rb b/app/models/hooks/web_hook.rb
index 752eb8074ac..23fa01e0b70 100644
--- a/app/models/hooks/web_hook.rb
+++ b/app/models/hooks/web_hook.rb
@@ -21,6 +21,7 @@ class WebHook < ActiveRecord::Base
   default_value_for :push_events, true
   default_value_for :issues_events, false
   default_value_for :merge_requests_events, false
+  default_value_for :tag_push_events, false
 
   # HTTParty timeout
   default_timeout Gitlab.config.gitlab.webhook_timeout
diff --git a/doc/api/projects.md b/doc/api/projects.md
index 8385e11b805..dfe3502b6e4 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -447,6 +447,7 @@ Parameters:
 - `push_events` - Trigger hook on push events
 - `issues_events` - Trigger hook on issues events
 - `merge_requests_events` - Trigger hook on merge_requests events
+- `tag_push_events` - Trigger hook on push_tag events
 
 ### Edit project hook
 
@@ -464,6 +465,7 @@ Parameters:
 - `push_events` - Trigger hook on push events
 - `issues_events` - Trigger hook on issues events
 - `merge_requests_events` - Trigger hook on merge_requests events
+- `tag_push_events` - Trigger hook on push_tag events
 
 ### Delete project hook
 
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index ffa3e8a149e..80e9470195e 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -30,7 +30,8 @@ module API
     end
 
     class ProjectHook < Hook
-      expose :project_id, :push_events, :issues_events, :merge_requests_events
+      expose :project_id, :push_events
+      expose :issues_events, :merge_requests_events, :tag_push_events
     end
 
     class ForkedFromProject < Grape::Entity
diff --git a/lib/api/project_hooks.rb b/lib/api/project_hooks.rb
index 79c3d122d32..7d056b9bf58 100644
--- a/lib/api/project_hooks.rb
+++ b/lib/api/project_hooks.rb
@@ -38,7 +38,13 @@ module API
       #   POST /projects/:id/hooks
       post ":id/hooks" do
         required_attributes! [:url]
-        attrs = attributes_for_keys [:url, :push_events, :issues_events, :merge_requests_events]
+        attrs = attributes_for_keys [
+          :url,
+          :push_events,
+          :issues_events,
+          :merge_requests_events,
+          :tag_push_events
+        ]
         @hook = user_project.hooks.new(attrs)
 
         if @hook.save
@@ -62,7 +68,13 @@ module API
       put ":id/hooks/:hook_id" do
         @hook = user_project.hooks.find(params[:hook_id])
         required_attributes! [:url]
-        attrs = attributes_for_keys [:url, :push_events, :issues_events, :merge_requests_events]
+        attrs = attributes_for_keys [
+          :url,
+          :push_events,
+          :issues_events,
+          :merge_requests_events,
+          :tag_push_events
+        ]
 
         if @hook.update_attributes attrs
           present @hook, with: Entities::ProjectHook
-- 
2.30.9