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
0
Merge Requests
0
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
Léo-Paul Géneau
gitlab-ce
Commits
4bfb98dd
Commit
4bfb98dd
authored
Feb 06, 2013
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2877 from former03/feature_groups_api
Add groups api
parents
0a20f7e7
33c48ecd
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
206 additions
and
1 deletion
+206
-1
doc/api/README.md
doc/api/README.md
+1
-0
doc/api/groups.md
doc/api/groups.md
+45
-0
lib/api.rb
lib/api.rb
+2
-1
lib/api/entities.rb
lib/api/entities.rb
+9
-0
lib/api/groups.rb
lib/api/groups.rb
+56
-0
spec/requests/api/groups_spec.rb
spec/requests/api/groups_spec.rb
+93
-0
No files found.
doc/api/README.md
View file @
4bfb98dd
...
@@ -32,6 +32,7 @@ When listing resources you can pass the following parameters:
...
@@ -32,6 +32,7 @@ When listing resources you can pass the following parameters:
+
[
Users
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/users.md
)
+
[
Users
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/users.md
)
+
[
Session
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/session.md
)
+
[
Session
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/session.md
)
+
[
Projects
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/projects.md
)
+
[
Projects
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/projects.md
)
+
[
Groups
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/groups.md
)
+
[
Snippets
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/snippets.md
)
+
[
Snippets
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/snippets.md
)
+
[
Repositories
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/repositories.md
)
+
[
Repositories
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/repositories.md
)
+
[
Issues
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/issues.md
)
+
[
Issues
](
https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/issues.md
)
...
...
doc/api/groups.md
0 → 100644
View file @
4bfb98dd
## List project groups
Get a list of groups. (As user: my groups, as admin: all groups)
```
GET /groups
```
```
json
[
{
"id"
:
1
,
"name"
:
"Foobar Group"
,
"path"
:
"foo-bar"
,
"owner_id"
:
18
}
]
```
## Details of group
Get all details of a group.
```
GET /groups/:id
```
Parameters:
+
`id`
(required) - The ID of a group
## New group
Create a new project group. Available only for admin
```
POST /groups
```
Parameters:
+
`name`
(required) - Email
+
`path`
- Password
Will return created group with status
`201 Created`
on success, or
`404 Not found`
on fail.
lib/api.rb
View file @
4bfb98dd
...
@@ -12,6 +12,7 @@ module Gitlab
...
@@ -12,6 +12,7 @@ module Gitlab
error_format
:json
error_format
:json
helpers
APIHelpers
helpers
APIHelpers
mount
Groups
mount
Users
mount
Users
mount
Projects
mount
Projects
mount
Issues
mount
Issues
...
...
lib/api/entities.rb
View file @
4bfb98dd
...
@@ -32,6 +32,15 @@ module Gitlab
...
@@ -32,6 +32,15 @@ module Gitlab
end
end
end
end
class
Group
<
Grape
::
Entity
expose
:id
,
:name
,
:path
,
:owner_id
end
class
GroupDetail
<
Group
expose
:projects
,
using:
Entities
::
Project
end
class
RepoObject
<
Grape
::
Entity
class
RepoObject
<
Grape
::
Entity
expose
:name
,
:commit
expose
:name
,
:commit
expose
:protected
do
|
repo
,
options
|
expose
:protected
do
|
repo
,
options
|
...
...
lib/api/groups.rb
0 → 100644
View file @
4bfb98dd
module
Gitlab
# groups API
class
Groups
<
Grape
::
API
before
{
authenticate!
}
resource
:groups
do
# Get a groups list
#
# Example Request:
# GET /groups
get
do
if
current_user
.
admin
@groups
=
paginate
Group
else
@groups
=
paginate
current_user
.
groups
end
present
@groups
,
with:
Entities
::
Group
end
# Create group. Available only for admin
#
# Parameters:
# name (required) - Name
# path (required) - Path
# Example Request:
# POST /groups
post
do
authenticated_as_admin!
attrs
=
attributes_for_keys
[
:name
,
:path
]
@group
=
Group
.
new
(
attrs
)
@group
.
owner
=
current_user
if
@group
.
save
present
@group
,
with:
Entities
::
Group
else
not_found!
end
end
# Get a single group, with containing projects
#
# Parameters:
# id (required) - The ID of a group
# Example Request:
# GET /groups/:id
get
":id"
do
@group
=
Group
.
find
(
params
[
:id
])
if
current_user
.
admin
or
current_user
.
groups
.
include?
@group
present
@group
,
with:
Entities
::
GroupDetail
else
not_found!
end
end
end
end
end
spec/requests/api/groups_spec.rb
0 → 100644
View file @
4bfb98dd
require
'spec_helper'
describe
Gitlab
::
API
do
include
ApiHelpers
let
(
:user1
)
{
create
(
:user
)
}
let
(
:user2
)
{
create
(
:user
)
}
let
(
:admin
)
{
create
(
:admin
)
}
let!
(
:group1
)
{
create
(
:group
,
owner:
user1
)
}
let!
(
:group2
)
{
create
(
:group
,
owner:
user2
)
}
describe
"GET /groups"
do
context
"when unauthenticated"
do
it
"should return authentication error"
do
get
api
(
"/groups"
)
response
.
status
.
should
==
401
end
end
context
"when authenticated as user"
do
it
"normal user: should return an array of groups of user1"
do
get
api
(
"/groups"
,
user1
)
response
.
status
.
should
==
200
json_response
.
should
be_an
Array
json_response
.
length
.
should
==
1
json_response
.
first
[
'name'
].
should
==
group1
.
name
end
end
context
"when authenticated as admin"
do
it
"admin: should return an array of all groups"
do
get
api
(
"/groups"
,
admin
)
response
.
status
.
should
==
200
json_response
.
should
be_an
Array
json_response
.
length
.
should
==
2
end
end
end
describe
"GET /groups/:id"
do
context
"when authenticated as user"
do
it
"should return one of user1's groups"
do
get
api
(
"/groups/
#{
group1
.
id
}
"
,
user1
)
response
.
status
.
should
==
200
json_response
[
'name'
]
==
group1
.
name
end
it
"should not return a non existing group"
do
get
api
(
"/groups/1328"
,
user1
)
response
.
status
.
should
==
404
end
it
"should not return a group not attached to user1"
do
get
api
(
"/groups/
#{
group2
.
id
}
"
,
user1
)
response
.
status
.
should
==
404
end
end
context
"when authenticated as admin"
do
it
"should return any existing group"
do
get
api
(
"/groups/
#{
group2
.
id
}
"
,
admin
)
response
.
status
.
should
==
200
json_response
[
'name'
]
==
group2
.
name
end
it
"should not return a non existing group"
do
get
api
(
"/groups/1328"
,
admin
)
response
.
status
.
should
==
404
end
end
end
describe
"POST /groups"
do
context
"when authenticated as user"
do
it
"should not create group"
do
post
api
(
"/groups"
,
user1
),
attributes_for
(
:group
)
response
.
status
.
should
==
403
end
end
context
"when authenticated as admin"
do
it
"should create group"
do
post
api
(
"/groups"
,
admin
),
attributes_for
(
:group
)
response
.
status
.
should
==
201
end
it
"should not create group, duplicate"
do
post
api
(
"/groups"
,
admin
),
{
:name
=>
"Duplicate Test"
,
:path
=>
group2
.
path
}
response
.
status
.
should
==
404
end
end
end
end
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