From 1dd712ddc238d2e6c30be09cb071c8e9b60cfcac Mon Sep 17 00:00:00 2001 From: Matt Humphrey Date: Wed, 6 Mar 2013 10:33:32 +0000 Subject: System hooks API. --- lib/api/system_hooks.rb | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 lib/api/system_hooks.rb (limited to 'lib/api') 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 -- cgit v1.2.1