summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/api/projects.md8
-rw-r--r--lib/api/helpers.rb4
-rw-r--r--lib/api/projects.rb12
3 files changed, 20 insertions, 4 deletions
diff --git a/doc/api/projects.md b/doc/api/projects.md
index 54135079e8b..56eee00ffe2 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -8,6 +8,10 @@ Get a list of projects accessible by the authenticated user.
GET /projects
```
+Parameters:
+
++ `archived` (optional) - if passed, limit by archived status
+
```json
[
{
@@ -250,7 +254,7 @@ Parameters:
+ `description` (optional) - short project description
+ `issues_enabled` (optional)
+ `merge_requests_enabled` (optional)
-+ `wiki_enabled` (optional)
++ `wiki_enabled` (optional)
+ `snippets_enabled` (optional)
+ `public` (optional) - if `true` same as setting visibility_level = 20
+ `visibility_level` (optional)
@@ -273,7 +277,7 @@ Parameters:
+ `default_branch` (optional) - 'master' by default
+ `issues_enabled` (optional)
+ `merge_requests_enabled` (optional)
-+ `wiki_enabled` (optional)
++ `wiki_enabled` (optional)
+ `snippets_enabled` (optional)
+ `public` (optional) - if `true` same as setting visibility_level = 20
+ `visibility_level` (optional)
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index d7d209e16f7..8189e433789 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -5,6 +5,10 @@ module API
SUDO_HEADER ="HTTP_SUDO"
SUDO_PARAM = :sudo
+ def parse_boolean(value)
+ [ true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON' ].include?(value)
+ end
+
def current_user
private_token = (params[PRIVATE_TOKEN_PARAM] || env[PRIVATE_TOKEN_HEADER]).to_s
@current_user ||= User.find_by(authentication_token: private_token)
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index ab272426ce0..27869e49f71 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -7,7 +7,7 @@ module API
helpers do
def map_public_to_visibility_level(attrs)
publik = attrs.delete(:public)
- publik = [ true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON' ].include?(publik)
+ publik = parse_boolean(publik)
attrs[:visibility_level] = Gitlab::VisibilityLevel::PUBLIC if !attrs[:visibility_level].present? && publik == true
attrs
end
@@ -15,10 +15,18 @@ module API
# Get a projects list for authenticated user
#
+ # Parameters:
+ # archived (optional) - if passed, limit by archived status
+ #
# Example Request:
# GET /projects
get do
- @projects = paginate current_user.authorized_projects
+ @query = current_user.authorized_projects
+ # If the archived parameter is passed, limit results accordingly
+ if params[:archived].present?
+ @query = @query.where(archived: parse_boolean(params[:archived]))
+ end
+ @projects = paginate @query
present @projects, with: Entities::Project
end