diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 757896fd59b1a26252869cd1df06f1e632be19d8..0f26a1f00a2fe1f17fed171be2519e7176ee2edc 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -79,6 +79,12 @@ module API expose :public_builds 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 @@ -328,12 +334,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 3a1837effd8a234bc8433d9c45bb6872be79fd13..77e407b54c54f95920fb8b22a4375a4bcc06eb8b 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 deade7cad9051e5e78e8c4e6716648c16ad3d6b1..c1e66b239aacd4a29ce9e61df165de0bb4ec9c17 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: