BigW Consortium Gitlab

Commit fc4108b3 by Tomasz Maczukin

Modify CI features in projects API

parent ba9799b4
......@@ -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.
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment