Merge pull request #1685 from jozefvaclavik/master

Hooks API (List one hook & edit)
This commit is contained in:
Valeriy Sizov 2012-10-12 02:23:53 -07:00
commit 89a349f9a5
4 changed files with 90 additions and 4 deletions

View file

@ -1,4 +1,6 @@
master
- [API] list one project hook
- [API] edit project hook
- [API] add project snippets list
- [API] allow to authorize using private token in HTTP header
- [API] add user creation

View file

@ -196,9 +196,9 @@ Parameters:
Status code `200` will be returned on success.
## Get project hooks
## List project hooks
Get hooks for project
Get list for project hooks
```
GET /projects/:id/hooks
@ -210,6 +210,21 @@ Parameters:
Will return hooks with status `200 OK` on success, or `404 Not found` on fail.
## Get project hook
Get hook for project
```
GET /projects/:id/hooks/:hook_id
```
Parameters:
+ `id` (required) - The ID or code name of a project
+ `hook_id` (required) - The ID of a project hook
Will return hook with status `200 OK` on success, or `404 Not found` on fail.
## Add project hook
Add hook to project
@ -225,6 +240,23 @@ Parameters:
Will return status `201 Created` on success, or `404 Not found` on fail.
## Edit project hook
Edit hook for project
```
PUT /projects/:id/hooks/:hook_id
```
Parameters:
+ `id` (required) - The ID or code name of a project
+ `hook_id` (required) - The ID of a project hook
+ `url` (required) - The hook URL
Will return status `201 Created` on success, or `404 Not found` on fail.
## Delete project hook
Delete hook from project

View file

@ -147,6 +147,19 @@ module Gitlab
@hooks = paginate user_project.hooks
present @hooks, with: Entities::Hook
end
# Get a project hook
#
# Parameters:
# id (required) - The ID or code name of a project
# hook_id (required) - The ID of a project hook
# Example Request:
# GET /projects/:id/hooks/:hook_id
get ":id/hooks/:hook_id" do
@hook = user_project.hooks.find(params[:hook_id])
present @hook, with: Entities::Hook
end
# Add hook to project
#
@ -164,6 +177,27 @@ module Gitlab
error!({'message' => '404 Not found'}, 404)
end
end
# Update an existing project hook
#
# Parameters:
# id (required) - The ID or code name of a project
# hook_id (required) - The ID of a project hook
# url (required) - The hook URL
# Example Request:
# PUT /projects/:id/hooks/:hook_id
put ":id/hooks/:hook_id" do
@hook = user_project.hooks.find(params[:hook_id])
authorize! :admin_project, user_project
attrs = attributes_for_keys [:url]
if @hook.update_attributes attrs
present @hook, with: Entities::Hook
else
not_found!
end
end
# Delete project hook
#

View file

@ -172,7 +172,15 @@ describe Gitlab::API do
end
end
describe "POST /projects/:id/users" do
describe "GET /projects/:id/hooks/:hook_id" do
it "should return a project hook" do
get api("/projects/#{project.code}/hooks/#{hook.id}", user)
response.status.should == 200
json_response['url'].should == hook.url
end
end
describe "POST /projects/:id/hooks" do
it "should add hook to project" do
expect {
post api("/projects/#{project.code}/hooks", user),
@ -180,6 +188,16 @@ describe Gitlab::API do
}.to change {project.hooks.count}.by(1)
end
end
describe "PUT /projects/:id/hooks/:hook_id" do
it "should update an existing project hook" do
put api("/projects/#{project.code}/hooks/#{hook.id}", user),
url: 'http://example.com'
response.status.should == 200
json_response['url'].should == 'http://example.com'
end
end
describe "DELETE /projects/:id/hooks" do
it "should delete hook from project" do
@ -246,7 +264,7 @@ describe Gitlab::API do
end
end
describe "PUT /projects/:id/snippets" do
describe "PUT /projects/:id/snippets/:shippet_id" do
it "should update an existing project snippet" do
put api("/projects/#{project.code}/snippets/#{snippet.id}", user),
code: 'updated code'