summaryrefslogtreecommitdiff
path: root/lib/api/groups.rb
diff options
context:
space:
mode:
authorSebastian Ziebell <sebastian.ziebell@asquera.de>2013-02-08 10:32:42 +0100
committerSebastian Ziebell <sebastian.ziebell@asquera.de>2013-02-08 10:32:42 +0100
commit8045a81bcf5822f1992442750e1484a93c368229 (patch)
tree94ce2b257f3ba002ac1a0fde70b69b622304810d /lib/api/groups.rb
parent5d8a99f10429168e6471fdd1843f5045a10a84b3 (diff)
parent2f0a75ab77af430f682d67aa9bb865007d832795 (diff)
downloadgitlab-ce-8045a81bcf5822f1992442750e1484a93c368229.tar.gz
Merge branch 'master' into fixes/api
Diffstat (limited to 'lib/api/groups.rb')
-rw-r--r--lib/api/groups.rb56
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/api/groups.rb b/lib/api/groups.rb
new file mode 100644
index 00000000000..a67caef0bc5
--- /dev/null
+++ b/lib/api/groups.rb
@@ -0,0 +1,56 @@
+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