summaryrefslogtreecommitdiff
path: root/lib/api/projects.rb
diff options
context:
space:
mode:
authorIzaak Alpert <ialpert@blackberry.com>2013-09-22 00:50:18 -0400
committerIzaak Alpert <ialpert@blackberry.com>2013-09-23 19:36:25 -0400
commit4cfbfbb845680f2df67110ca15f2479cba8e2441 (patch)
tree2ef7183fca2fe8ede1c85a89310033cbfef2e29d /lib/api/projects.rb
parent0630be3828998af1261b87ae85b42c0ef9a439ed (diff)
downloadgitlab-ce-4cfbfbb845680f2df67110ca15f2479cba8e2441.tar.gz
Added search for projects by name to api
GITLAB-1283 (GITLAB-869) Change-Id: I611e7e93f6292de08e1edc8d3ea77cf9087b6ded Conflicts: config/initializers/1_settings.rb
Diffstat (limited to 'lib/api/projects.rb')
-rw-r--r--lib/api/projects.rb53
1 files changed, 34 insertions, 19 deletions
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index c6ff524cb06..d17b791dccc 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -73,16 +73,16 @@ module API
post do
required_attributes! [:name]
attrs = attributes_for_keys [:name,
- :path,
- :description,
- :default_branch,
- :issues_enabled,
- :wall_enabled,
- :merge_requests_enabled,
- :wiki_enabled,
- :snippets_enabled,
- :namespace_id,
- :public]
+ :path,
+ :description,
+ :default_branch,
+ :issues_enabled,
+ :wall_enabled,
+ :merge_requests_enabled,
+ :wiki_enabled,
+ :snippets_enabled,
+ :namespace_id,
+ :public]
@project = ::Projects::CreateContext.new(current_user, attrs).execute
if @project.saved?
present @project, with: Entities::Project
@@ -113,14 +113,14 @@ module API
authenticated_as_admin!
user = User.find(params[:user_id])
attrs = attributes_for_keys [:name,
- :description,
- :default_branch,
- :issues_enabled,
- :wall_enabled,
- :merge_requests_enabled,
- :wiki_enabled,
- :snippets_enabled,
- :public]
+ :description,
+ :default_branch,
+ :issues_enabled,
+ :wall_enabled,
+ :merge_requests_enabled,
+ :wiki_enabled,
+ :snippets_enabled,
+ :public]
@project = ::Projects::CreateContext.new(user, attrs).execute
if @project.saved?
present @project, with: Entities::Project
@@ -165,7 +165,6 @@ module API
end
end
-
# Get a project team members
#
# Parameters:
@@ -262,6 +261,22 @@ module API
{message: "Access revoked", id: params[:user_id].to_i}
end
end
+
+ # search for projects current_user has access to
+ #
+ # Parameters:
+ # query (required) - A string contained in the project name
+ # per_page (optional) - number of projects to return per page, defaults to 20
+ # offset (optional) - the offset in pages to retrieve
+ # Example Request:
+ # GET /projects/search/:query
+ get "/search/:query" do
+ limit = (params[:per_page] || 20).to_i
+ offset = (params[:page] || 0).to_i * limit
+ ids = current_user.authorized_projects.map(&:id)
+ projects = Project.where("(id in (?) OR public = true) AND (name LIKE (?))", ids, "%#{params[:query]}%").limit(limit).offset(offset)
+ present projects, with: Entities::Project
+ end
end
end
end