summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Maczukin <tomasz@maczukin.pl>2016-01-11 15:27:20 +0100
committerTomasz Maczukin <tomasz@maczukin.pl>2016-01-11 15:27:20 +0100
commitfc4108b38b5d0a7fc755c1977663f516b5dea0bd (patch)
treec7946f1b49765bf18d9646d4594145e7fd528064
parentba9799b42f5bc861df1fc5d41c149cf72e9daf04 (diff)
downloadgitlab-ce-ci/api-projects.tar.gz
Modify CI features in projects APIci/api-projects
-rw-r--r--doc/api/projects.md21
-rw-r--r--lib/api/entities.rb4
-rw-r--r--lib/api/helpers.rb2
-rw-r--r--lib/api/projects.rb41
4 files changed, 17 insertions, 51 deletions
diff --git a/doc/api/projects.md b/doc/api/projects.md
index 96a3f08490c..4632554bf86 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -79,11 +79,7 @@ Parameters:
"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
"shared_runners_enabled": true,
"forks_count": 0,
- "star_count": 0,
- "build_allow_git_fetch": true,
- "build_coverage_regex": null,
- "build_timeout": 3600,
- "runners_token": "4f9e77be0eed5ef29548fccda3b371"
+ "star_count": 0
},
{
"id": 6,
@@ -140,9 +136,6 @@ Parameters:
"shared_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
- "build_allow_git_fetch": true,
- "build_coverage_regex": null,
- "build_timeout": 3600,
"runners_token": "b8547b1dc37721d05889db52fa2f02"
}
]
@@ -262,9 +255,6 @@ Parameters:
"shared_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
- "build_allow_git_fetch": true,
- "build_coverage_regex": null,
- "build_timeout": 3600,
"runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b"
}
```
@@ -430,9 +420,6 @@ Parameters:
- `public` (optional) - if `true` same as setting visibility_level = 20
- `visibility_level` (optional)
- `import_url` (optional)
-- `build_allow_git_fetch` (optional)
-- `build_timeout` (optional)
-- `build_coverage_regex` (optional)
### Create project for user
@@ -455,9 +442,6 @@ Parameters:
- `public` (optional) - if `true` same as setting visibility_level = 20
- `visibility_level` (optional)
- `import_url` (optional)
-- `build_allow_git_fetch` (optional)
-- `build_timeout` (optional)
-- `build_coverage_regex` (optional)
### Edit project
@@ -481,9 +465,6 @@ Parameters:
- `snippets_enabled` (optional)
- `public` (optional) - if `true` same as setting visibility_level = 20
- `visibility_level` (optional)
-- `build_allow_git_fetch` (optional)
-- `build_timeout` (optional)
-- `build_coverage_regex` (optional)
On success, method returns 200 with the updated project. If parameters are
invalid, 400 is returned.
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index e8154e0f383..e3bc3316ce5 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -71,9 +71,7 @@ module API
expose :avatar_url
expose :star_count, :forks_count
expose :open_issues_count, if: lambda { |project, options| project.issues_enabled? && project.default_issues_tracker? }
-
- expose :build_allow_git_fetch, :build_timeout, :build_coverage_regex
- expose :runners_token
+ expose :runners_token, if: lambda { |_project, options| options[:user_can_admin_project] }
end
class ProjectMember < UserBasic
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index 563c12e4f74..a4df810e755 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -157,7 +157,7 @@ module API
def attributes_for_keys(keys, custom_params = nil)
attrs = {}
keys.each do |key|
- if params[key].present? or (params.has_key?(key) and (params[key].empty? or params[key] == false))
+ if params[key].present? or (params.has_key?(key) and params[key] == false)
attrs[key] = params[key]
end
end
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 31b081266a8..28c3583f351 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -69,7 +69,8 @@ module API
# Example Request:
# GET /projects/:id
get ":id" do
- present user_project, with: Entities::ProjectWithAccess, user: current_user
+ present user_project, with: Entities::ProjectWithAccess, user: current_user,
+ user_can_admin_project: can?(current_user, :admin_project, user_project)
end
# Get events for a single project
@@ -98,9 +99,6 @@ module API
# public (optional) - if true same as setting visibility_level = 20
# visibility_level (optional) - 0 by default
# import_url (optional)
- # build_allow_git_fetch (optional)
- # build_timeout (optional)
- # build_coverage_regex (optional)
# Example Request
# POST /projects
post do
@@ -117,14 +115,12 @@ module API
:namespace_id,
:public,
:visibility_level,
- :import_url,
- :build_allow_git_fetch,
- :build_timeout,
- :build_coverage_regex]
+ :import_url]
attrs = map_public_to_visibility_level(attrs)
@project = ::Projects::CreateService.new(current_user, attrs).execute
if @project.saved?
- present @project, with: Entities::Project
+ present @project, with: Entities::Project,
+ user_can_admin_project: can?(current_user, :admin_project, @project)
else
if @project.errors[:limit_reached].present?
error!(@project.errors[:limit_reached], 403)
@@ -149,9 +145,6 @@ module API
# public (optional) - if true same as setting visibility_level = 20
# visibility_level (optional)
# import_url (optional)
- # build_allow_git_fetch (optional)
- # build_timeout (optional)
- # build_coverage_regex (optional)
# Example Request
# POST /projects/user/:user_id
post "user/:user_id" do
@@ -168,14 +161,12 @@ module API
:shared_runners_enabled,
:public,
:visibility_level,
- :import_url,
- :build_allow_git_fetch,
- :build_timeout,
- :build_coverage_regex]
+ :import_url]
attrs = map_public_to_visibility_level(attrs)
@project = ::Projects::CreateService.new(user, attrs).execute
if @project.saved?
- present @project, with: Entities::Project
+ present @project, with: Entities::Project,
+ user_can_admin_project: can?(current_user, :admin_project, @project)
else
render_validation_error!(@project)
end
@@ -194,8 +185,9 @@ module API
if @forked_project.errors.any?
conflict!(@forked_project.errors.messages)
else
- present @forked_project, with: Entities::Project
- end
+ present @forked_project, with: Entities::Project,
+ user_can_admin_project: can?(current_user, :admin_project, @forked_project)
+ end
end
# Update an existing project
@@ -213,9 +205,6 @@ module API
# shared_runners_enabled (optional)
# public (optional) - if true same as setting visibility_level = 20
# visibility_level (optional) - visibility level of a project
- # build_allow_git_fetch (optional)
- # build_timeout (optional)
- # build_coverage_regex (optional)
# Example Request
# PUT /projects/:id
put ':id' do
@@ -230,10 +219,7 @@ module API
:snippets_enabled,
:shared_runners_enabled,
:public,
- :visibility_level,
- :build_allow_git_fetch,
- :build_timeout,
- :build_coverage_regex]
+ :visibility_level]
attrs = map_public_to_visibility_level(attrs)
authorize_admin_project
authorize! :rename_project, user_project if attrs[:name].present?
@@ -247,7 +233,8 @@ module API
if user_project.errors.any?
render_validation_error!(user_project)
else
- present user_project, with: Entities::Project
+ present user_project, with: Entities::Project,
+ user_can_admin_project: can?(current_user, :admin_project, user_project)
end
end