Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib/api
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-03-17 15:44:54 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-03-17 15:44:54 +0400
commit7c60713e82982066e187b8c16ce327978b451b0a (patch)
tree3edd4eb262a1954289070b1e91d84a4af5ce3db3 /lib/api
parent7bce8748a442a24efa6352cf2df5fff614e33283 (diff)
Move project members api to separate file
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'lib/api')
-rw-r--r--lib/api/api.rb1
-rw-r--r--lib/api/project_hooks.rb9
-rw-r--r--lib/api/project_members.rb114
-rw-r--r--lib/api/projects.rb105
4 files changed, 115 insertions, 114 deletions
diff --git a/lib/api/api.rb b/lib/api/api.rb
index 6bec8368b12..7c4cdad7f0d 100644
--- a/lib/api/api.rb
+++ b/lib/api/api.rb
@@ -38,6 +38,7 @@ module API
mount Internal
mount SystemHooks
mount ProjectSnippets
+ mount ProjectMembers
mount DeployKeys
mount ProjectHooks
mount Services
diff --git a/lib/api/project_hooks.rb b/lib/api/project_hooks.rb
index c271dd8b61b..79c3d122d32 100644
--- a/lib/api/project_hooks.rb
+++ b/lib/api/project_hooks.rb
@@ -5,15 +5,6 @@ module API
before { authorize_admin_project }
resource :projects do
- helpers do
- def handle_project_member_errors(errors)
- if errors[:project_access].any?
- error!(errors[:project_access], 422)
- end
- not_found!
- end
- end
-
# Get project hooks
#
# Parameters:
diff --git a/lib/api/project_members.rb b/lib/api/project_members.rb
new file mode 100644
index 00000000000..47c4ddce163
--- /dev/null
+++ b/lib/api/project_members.rb
@@ -0,0 +1,114 @@
+module API
+ # Projects members API
+ class ProjectMembers < Grape::API
+ before { authenticate! }
+
+ resource :projects do
+ helpers do
+ def handle_project_member_errors(errors)
+ if errors[:project_access].any?
+ error!(errors[:project_access], 422)
+ end
+ not_found!
+ end
+ end
+
+ # Get a project team members
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # query - Query string
+ # Example Request:
+ # GET /projects/:id/members
+ get ":id/members" do
+ if params[:query].present?
+ @members = paginate user_project.users.where("username LIKE ?", "%#{params[:query]}%")
+ else
+ @members = paginate user_project.users
+ end
+ present @members, with: Entities::ProjectMember, project: user_project
+ end
+
+ # Get a project team members
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # user_id (required) - The ID of a user
+ # Example Request:
+ # GET /projects/:id/members/:user_id
+ get ":id/members/:user_id" do
+ @member = user_project.users.find params[:user_id]
+ present @member, with: Entities::ProjectMember, project: user_project
+ end
+
+ # Add a new project team member
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # user_id (required) - The ID of a user
+ # access_level (required) - Project access level
+ # Example Request:
+ # POST /projects/:id/members
+ post ":id/members" do
+ authorize! :admin_project, user_project
+ required_attributes! [:user_id, :access_level]
+
+ # either the user is already a team member or a new one
+ team_member = user_project.team_member_by_id(params[:user_id])
+ if team_member.nil?
+ team_member = user_project.users_projects.new(
+ user_id: params[:user_id],
+ project_access: params[:access_level]
+ )
+ end
+
+ if team_member.save
+ @member = team_member.user
+ present @member, with: Entities::ProjectMember, project: user_project
+ else
+ handle_project_member_errors team_member.errors
+ end
+ end
+
+ # Update project team member
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # user_id (required) - The ID of a team member
+ # access_level (required) - Project access level
+ # Example Request:
+ # PUT /projects/:id/members/:user_id
+ put ":id/members/:user_id" do
+ authorize! :admin_project, user_project
+ required_attributes! [:access_level]
+
+ team_member = user_project.users_projects.find_by(user_id: params[:user_id])
+ not_found!("User can not be found") if team_member.nil?
+
+ if team_member.update_attributes(project_access: params[:access_level])
+ @member = team_member.user
+ present @member, with: Entities::ProjectMember, project: user_project
+ else
+ handle_project_member_errors team_member.errors
+ end
+ end
+
+ # Remove a team member from project
+ #
+ # Parameters:
+ # id (required) - The ID of a project
+ # user_id (required) - The ID of a team member
+ # Example Request:
+ # DELETE /projects/:id/members/:user_id
+ delete ":id/members/:user_id" do
+ authorize! :admin_project, user_project
+ team_member = user_project.users_projects.find_by(user_id: params[:user_id])
+ unless team_member.nil?
+ team_member.destroy
+ else
+ {message: "Access revoked", id: params[:user_id].to_i}
+ end
+ end
+ end
+ end
+end
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index bcca69ff49a..618a582a451 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -5,13 +5,6 @@ module API
resource :projects do
helpers do
- def handle_project_member_errors(errors)
- if errors[:project_access].any?
- error!(errors[:project_access], 422)
- end
- not_found!
- end
-
def map_public_to_visibility_level(attrs)
publik = attrs.delete(:public)
publik = [ true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON' ].include?(publik)
@@ -196,104 +189,6 @@ module API
user_project.forked_project_link.destroy
end
end
-
- # Get a project team members
- #
- # Parameters:
- # id (required) - The ID of a project
- # query - Query string
- # Example Request:
- # GET /projects/:id/members
- get ":id/members" do
- if params[:query].present?
- @members = paginate user_project.users.where("username LIKE ?", "%#{params[:query]}%")
- else
- @members = paginate user_project.users
- end
- present @members, with: Entities::ProjectMember, project: user_project
- end
-
- # Get a project team members
- #
- # Parameters:
- # id (required) - The ID of a project
- # user_id (required) - The ID of a user
- # Example Request:
- # GET /projects/:id/members/:user_id
- get ":id/members/:user_id" do
- @member = user_project.users.find params[:user_id]
- present @member, with: Entities::ProjectMember, project: user_project
- end
-
- # Add a new project team member
- #
- # Parameters:
- # id (required) - The ID of a project
- # user_id (required) - The ID of a user
- # access_level (required) - Project access level
- # Example Request:
- # POST /projects/:id/members
- post ":id/members" do
- authorize! :admin_project, user_project
- required_attributes! [:user_id, :access_level]
-
- # either the user is already a team member or a new one
- team_member = user_project.team_member_by_id(params[:user_id])
- if team_member.nil?
- team_member = user_project.users_projects.new(
- user_id: params[:user_id],
- project_access: params[:access_level]
- )
- end
-
- if team_member.save
- @member = team_member.user
- present @member, with: Entities::ProjectMember, project: user_project
- else
- handle_project_member_errors team_member.errors
- end
- end
-
- # Update project team member
- #
- # Parameters:
- # id (required) - The ID of a project
- # user_id (required) - The ID of a team member
- # access_level (required) - Project access level
- # Example Request:
- # PUT /projects/:id/members/:user_id
- put ":id/members/:user_id" do
- authorize! :admin_project, user_project
- required_attributes! [:access_level]
-
- team_member = user_project.users_projects.find_by(user_id: params[:user_id])
- not_found!("User can not be found") if team_member.nil?
-
- if team_member.update_attributes(project_access: params[:access_level])
- @member = team_member.user
- present @member, with: Entities::ProjectMember, project: user_project
- else
- handle_project_member_errors team_member.errors
- end
- end
-
- # Remove a team member from project
- #
- # Parameters:
- # id (required) - The ID of a project
- # user_id (required) - The ID of a team member
- # Example Request:
- # DELETE /projects/:id/members/:user_id
- delete ":id/members/:user_id" do
- authorize! :admin_project, user_project
- team_member = user_project.users_projects.find_by(user_id: params[:user_id])
- unless team_member.nil?
- team_member.destroy
- else
- {message: "Access revoked", id: params[:user_id].to_i}
- end
- end
-
# search for projects current_user has access to
#
# Parameters: