summaryrefslogtreecommitdiff
path: root/lib/api
diff options
context:
space:
mode:
authortiagonbotelho <tiagonbotelho@hotmail.com>2016-07-06 17:53:40 +0100
committertiagonbotelho <tiagonbotelho@hotmail.com>2016-07-12 16:36:42 +0100
commita8cf4e13b33da8d71e16874ebf3dce9ca9d40b76 (patch)
tree57de33f76ac9f64cdf7d6acc2d3f9fcc07dcb6ea /lib/api
parente1c5eb480e10329245760edd0760a5b3cb929240 (diff)
downloadgitlab-ce-a8cf4e13b33da8d71e16874ebf3dce9ca9d40b76.tar.gz
adds basic functionality to the new endpoint of the api
Diffstat (limited to 'lib/api')
-rw-r--r--lib/api/entities.rb16
-rw-r--r--lib/api/helpers.rb17
-rw-r--r--lib/api/projects.rb13
3 files changed, 25 insertions, 21 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index f00a4ac2ed6..951cca248a1 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -90,6 +90,12 @@ module API
end
end
+ class SimpleProject < Grape::Entity
+ expose :id
+ expose :name, :name_with_namespace
+ expose :http_url_to_repo
+ end
+
class ProjectMember < UserBasic
expose :access_level do |user, options|
options[:project].project_members.find_by(user_id: user.id).access_level
@@ -341,12 +347,18 @@ module API
end
end
+ class SimpleProjectWithAccess < SimpleProject
+ expose :permissions do
+ expose :project_access, using: Entities::ProjectAccess do |project, options|
+ project.project_members.find_by(user_id: options[:user].id)
+ end
+ end
+ end
+
class ProjectWithAccess < Project
expose :permissions do
expose :project_access, using: Entities::ProjectAccess do |project, options|
- project = Project.find_by(project[:id])
project.project_members.find_by(user_id: options[:user].id)
- ]
end
expose :group_access, using: Entities::GroupAccess do |project, options|
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index 3a1837effd8..77e407b54c5 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -287,23 +287,6 @@ module API
# Projects helpers
- def filter_params(projects)
- project_entries = []
-
- # Removes the redundant information of the object
- projects.each do |project|
- entry = {
- id: project.id,
- http_url_to_repo: project.http_url_to_repo,
- name_with_namespace: project.name_with_namespace
- }
-
- project_entries << entry
- end
-
- project_entries
- end
-
def filter_projects(projects)
# If the archived parameter is passed, limit results accordingly
if params[:archived].present?
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index deade7cad90..c1e66b239aa 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -25,11 +25,20 @@ module API
@projects = current_user.authorized_projects
@projects = filter_projects(@projects)
@projects = paginate @projects
- @projects = filter_params(@projects)
- puts present @projects, with: Entities::ProjectWithAccess, user: current_user
present @projects, with: Entities::ProjectWithAccess, user: current_user
end
+ # Get a simplified project list for authenticated user
+ #
+ # Example Request:
+ # GET /projects/simple
+ get '/simple' do
+ @projects = current_user.authorized_projects
+ @projects = filter_projects(@projects)
+ @projects = paginate @projects
+ present @projects, with: Entities::SimpleProjectWithAccess, user: current_user
+ end
+
# Get an owned projects list for authenticated user
#
# Example Request: