055afab5c7
This MR simplifies CI permission model: - read_build: allows to read a list of builds, artifacts and trace - update_build: allows to cancel and retry builds - create_build: allows to create builds from gitlab-ci.yml (not yet implemented) - admin_build: allows to manage triggers, runners and variables - read_commit_status: allows to read a list of commit statuses (including the overall of builds) - create_commit_status: allows to create a new commit status using API Remove all extra methods to manage permission. Made all controllers to use explicitly the new permissions.
95 lines
2.8 KiB
Ruby
95 lines
2.8 KiB
Ruby
module API
|
|
# Projects variables API
|
|
class Variables < Grape::API
|
|
before { authenticate! }
|
|
before { authorize! :admin_build, user_project }
|
|
|
|
resource :projects do
|
|
# Get project variables
|
|
#
|
|
# Parameters:
|
|
# id (required) - The ID of a project
|
|
# page (optional) - The page number for pagination
|
|
# per_page (optional) - The value of items per page to show
|
|
# Example Request:
|
|
# GET /projects/:id/variables
|
|
get ':id/variables' do
|
|
variables = user_project.variables
|
|
present paginate(variables), with: Entities::Variable
|
|
end
|
|
|
|
# Get specific variable of a project
|
|
#
|
|
# Parameters:
|
|
# id (required) - The ID of a project
|
|
# key (required) - The `key` of variable
|
|
# Example Request:
|
|
# GET /projects/:id/variables/:key
|
|
get ':id/variables/:key' do
|
|
key = params[:key]
|
|
variable = user_project.variables.find_by(key: key.to_s)
|
|
|
|
return not_found!('Variable') unless variable
|
|
|
|
present variable, with: Entities::Variable
|
|
end
|
|
|
|
# Create a new variable in project
|
|
#
|
|
# Parameters:
|
|
# id (required) - The ID of a project
|
|
# key (required) - The key of variable
|
|
# value (required) - The value of variable
|
|
# Example Request:
|
|
# POST /projects/:id/variables
|
|
post ':id/variables' do
|
|
required_attributes! [:key, :value]
|
|
|
|
variable = user_project.variables.create(key: params[:key], value: params[:value])
|
|
|
|
if variable.valid?
|
|
present variable, with: Entities::Variable
|
|
else
|
|
render_validation_error!(variable)
|
|
end
|
|
end
|
|
|
|
# Update existing variable of a project
|
|
#
|
|
# Parameters:
|
|
# id (required) - The ID of a project
|
|
# key (optional) - The `key` of variable
|
|
# value (optional) - New value for `value` field of variable
|
|
# Example Request:
|
|
# PUT /projects/:id/variables/:key
|
|
put ':id/variables/:key' do
|
|
variable = user_project.variables.find_by(key: params[:key].to_s)
|
|
|
|
return not_found!('Variable') unless variable
|
|
|
|
attrs = attributes_for_keys [:value]
|
|
if variable.update(attrs)
|
|
present variable, with: Entities::Variable
|
|
else
|
|
render_validation_error!(variable)
|
|
end
|
|
end
|
|
|
|
# Delete existing variable of a project
|
|
#
|
|
# Parameters:
|
|
# id (required) - The ID of a project
|
|
# key (required) - The ID of a variable
|
|
# Example Request:
|
|
# DELETE /projects/:id/variables/:key
|
|
delete ':id/variables/:key' do
|
|
variable = user_project.variables.find_by(key: params[:key].to_s)
|
|
|
|
return not_found!('Variable') unless variable
|
|
variable.destroy
|
|
|
|
present variable, with: Entities::Variable
|
|
end
|
|
end
|
|
end
|
|
end
|