Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
3643df1f
Commit
3643df1f
authored
Sep 12, 2012
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1411 from miks/project_hooks_api
Project hooks API
parents
6233fb6b
6d76e000
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
122 additions
and
0 deletions
+122
-0
doc/api/projects.md
doc/api/projects.md
+44
-0
lib/api/entities.rb
lib/api/entities.rb
+4
-0
lib/api/projects.rb
lib/api/projects.rb
+43
-0
spec/requests/api/projects_spec.rb
spec/requests/api/projects_spec.rb
+31
-0
No files found.
doc/api/projects.md
View file @
3643df1f
...
...
@@ -173,6 +173,50 @@ Parameters:
Will return status `
200 OK
` on success, or `
404 Not found
` on fail.
## Get project hooks
Get hooks for project
```
GET /projects/:id/hooks
```
Parameters:
+ `
id
` (required) - The ID or code name of a project
Will return hooks with status `
200 OK
` on success, or `
404 Not found
` on fail.
## Add project hook
Add hook to project
```
POST /projects/:id/hooks
```
Parameters:
+ `
id
` (required) - The ID or code name of a project
+ `
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
```
DELETE /projects/:id/hooks
```
Parameters:
+ `
id
` (required) - The ID or code name of a project
+ `
hook_id
` (required) - The ID of hook to delete
Will return status `
200 OK
` on success, or `
404 Not found
` on fail.
## Project repository branches
Get a list of repository branches from a project, sorted by name alphabetically.
...
...
lib/api/entities.rb
View file @
3643df1f
...
...
@@ -9,6 +9,10 @@ module Gitlab
expose
:id
,
:email
,
:name
,
:blocked
,
:created_at
end
class
Hook
<
Grape
::
Entity
expose
:id
,
:url
end
class
Project
<
Grape
::
Entity
expose
:id
,
:code
,
:name
,
:description
,
:path
,
:default_branch
expose
:owner
,
using:
Entities
::
UserBasic
...
...
lib/api/projects.rb
View file @
3643df1f
...
...
@@ -106,6 +106,49 @@ module Gitlab
nil
end
# Get project hooks
#
# Parameters:
# id (required) - The ID or code name of a project
# Example Request:
# GET /projects/:id/hooks
get
":id/hooks"
do
authorize!
:admin_project
,
user_project
@hooks
=
paginate
user_project
.
hooks
present
@hooks
,
with:
Entities
::
Hook
end
# Add hook to project
#
# Parameters:
# id (required) - The ID or code name of a project
# url (required) - The hook URL
# Example Request:
# POST /projects/:id/hooks
post
":id/hooks"
do
authorize!
:admin_project
,
user_project
@hook
=
user_project
.
hooks
.
new
({
"url"
=>
params
[
:url
]})
if
@hook
.
save
present
@hook
,
with:
Entities
::
Hook
else
error!
({
'message'
=>
'404 Not found'
},
404
)
end
end
# Delete project hook
#
# Parameters:
# id (required) - The ID or code name of a project
# hook_id (required) - The ID of hook to delete
# Example Request:
# DELETE /projects/:id/hooks
delete
":id/hooks"
do
authorize!
:admin_project
,
user_project
@hook
=
user_project
.
hooks
.
find
(
params
[
:hook_id
])
@hook
.
destroy
nil
end
# Get a project repository branches
#
# Parameters:
...
...
spec/requests/api/projects_spec.rb
View file @
3643df1f
...
...
@@ -6,6 +6,7 @@ describe Gitlab::API do
let
(
:user
)
{
Factory
:user
}
let
(
:user2
)
{
Factory
.
create
(
:user
)
}
let
(
:user3
)
{
Factory
.
create
(
:user
)
}
let!
(
:hook
)
{
Factory
:project_hook
,
project:
project
,
url:
"http://example.com"
}
let!
(
:project
)
{
Factory
:project
,
owner:
user
}
let!
(
:snippet
)
{
Factory
:snippet
,
author:
user
,
project:
project
,
title:
'example'
}
let!
(
:users_project
)
{
Factory
:users_project
,
user:
user
,
project:
project
,
project_access:
UsersProject
::
MASTER
}
...
...
@@ -149,6 +150,36 @@ describe Gitlab::API do
end
end
describe
"GET /projects/:id/hooks"
do
it
"should return project hooks"
do
get
api
(
"/projects/
#{
project
.
code
}
/hooks"
,
user
)
response
.
status
.
should
==
200
json_response
.
should
be_an
Array
json_response
.
count
.
should
==
1
json_response
.
first
[
'url'
].
should
==
"http://example.com"
end
end
describe
"POST /projects/:id/users"
do
it
"should add hook to project"
do
expect
{
post
api
(
"/projects/
#{
project
.
code
}
/hooks"
,
user
),
"url"
=>
"http://example.com"
}.
to
change
{
project
.
hooks
.
count
}.
by
(
1
)
end
end
describe
"DELETE /projects/:id/hooks"
do
it
"should delete hook from project"
do
expect
{
delete
api
(
"/projects/
#{
project
.
code
}
/hooks"
,
user
),
hook_id:
hook
.
id
}.
to
change
{
project
.
hooks
.
count
}.
by
(
-
1
)
end
end
describe
"GET /projects/:id/repository/tags"
do
it
"should return an array of project tags"
do
get
api
(
"/projects/
#{
project
.
code
}
/repository/tags"
,
user
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment