summaryrefslogtreecommitdiff
path: root/lib/api
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-03-06 07:42:43 -0800
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-03-06 07:42:43 -0800
commit65d78253cb289091a4eb389bada11828849d434c (patch)
treee002a0c13e744407e90f14b3f3b8d92bd5bb675a /lib/api
parent0384ef46b8839e7d9824473952e82ec62f72081a (diff)
parent1dd712ddc238d2e6c30be09cb071c8e9b60cfcac (diff)
downloadgitlab-ce-65d78253cb289091a4eb389bada11828849d434c.tar.gz
Merge pull request #3156 from m4tthumphrey/api-system-hooks
Added methods to manage system hooks from API
Diffstat (limited to 'lib/api')
-rw-r--r--lib/api/system_hooks.rb60
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/api/system_hooks.rb b/lib/api/system_hooks.rb
new file mode 100644
index 00000000000..665a1cdd0d2
--- /dev/null
+++ b/lib/api/system_hooks.rb
@@ -0,0 +1,60 @@
+module Gitlab
+ # Hooks API
+ class SystemHooks < Grape::API
+ before { authenticated_as_admin! }
+
+ resource :hooks do
+ # Get the list of system hooks
+ #
+ # Example Request:
+ # GET /hooks
+ get do
+ @hooks = SystemHook.all
+ present @hooks, with: Entities::Hook
+ end
+
+ # Create new system hook
+ #
+ # Parameters:
+ # url (required) - url for system hook
+ # Example Request
+ # POST /hooks
+ post do
+ attrs = attributes_for_keys [:url]
+ @hook = SystemHook.new attrs
+ if @hook.save
+ present @hook, with: Entities::Hook
+ else
+ not_found!
+ end
+ end
+
+ # Test a hook
+ #
+ # Example Request
+ # GET /hooks/:id
+ get ":id" do
+ @hook = SystemHook.find(params[:id])
+ data = {
+ event_name: "project_create",
+ name: "Ruby",
+ path: "ruby",
+ project_id: 1,
+ owner_name: "Someone",
+ owner_email: "example@gitlabhq.com"
+ }
+ @hook.execute(data)
+ data
+ end
+
+ # Delete a hook
+ #
+ # Example Request:
+ # DELETE /hooks/:id
+ delete ":id" do
+ @hook = SystemHook.find(params[:id])
+ @hook.destroy
+ end
+ end
+ end
+end \ No newline at end of file