gitlabhq/lib/api/system_hooks.rb

70 lines
1.6 KiB
Ruby

module Gitlab
# Hooks API
class SystemHooks < Grape::API
before {
authenticate!
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]
required_attributes! [: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. This is an idempotent function.
#
# Parameters:
# id (required) - ID of the hook
# Example Request:
# DELETE /hooks/:id
delete ":id" do
begin
@hook = SystemHook.find(params[:id])
@hook.destroy
rescue
# SystemHook raises an Error if no hook with id found
end
end
end
end
end