Simplify entities for branches and tags API
This commit is contained in:
parent
1cd573ee7f
commit
3413f6fa50
2 changed files with 22 additions and 43 deletions
|
@ -15,7 +15,8 @@ module API
|
|||
# GET /projects/:id/repository/branches
|
||||
get ":id/repository/branches" do
|
||||
branches = user_project.repository.branches.sort_by(&:name)
|
||||
present branches, with: Entities::RepoObject, project: user_project
|
||||
|
||||
present branches, with: Entities::RepoBranch, project: user_project
|
||||
end
|
||||
|
||||
# Get a single branch
|
||||
|
@ -28,7 +29,8 @@ module API
|
|||
get ':id/repository/branches/:branch', requirements: { branch: /.+/ } do
|
||||
@branch = user_project.repository.branches.find { |item| item.name == params[:branch] }
|
||||
not_found!("Branch") unless @branch
|
||||
present @branch, with: Entities::RepoObject, project: user_project
|
||||
|
||||
present @branch, with: Entities::RepoBranch, project: user_project
|
||||
end
|
||||
|
||||
# Protect a single branch
|
||||
|
@ -60,7 +62,7 @@ module API
|
|||
developers_can_merge: developers_can_merge || false)
|
||||
end
|
||||
|
||||
present @branch, with: Entities::RepoObject, project: user_project
|
||||
present @branch, with: Entities::RepoBranch, project: user_project
|
||||
end
|
||||
|
||||
# Unprotect a single branch
|
||||
|
@ -79,7 +81,7 @@ module API
|
|||
protected_branch = user_project.protected_branches.find_by(name: @branch.name)
|
||||
protected_branch.destroy if protected_branch
|
||||
|
||||
present @branch, with: Entities::RepoObject, project: user_project
|
||||
present @branch, with: Entities::RepoBranch, project: user_project
|
||||
end
|
||||
|
||||
# Create branch
|
||||
|
@ -97,7 +99,7 @@ module API
|
|||
|
||||
if result[:status] == :success
|
||||
present result[:branch],
|
||||
with: Entities::RepoObject,
|
||||
with: Entities::RepoBranch,
|
||||
project: user_project
|
||||
else
|
||||
render_api_error!(result[:message], 400)
|
||||
|
|
|
@ -114,33 +114,23 @@ module API
|
|||
end
|
||||
end
|
||||
|
||||
class RepoObject < Grape::Entity
|
||||
class RepoBranch < Grape::Entity
|
||||
expose :name
|
||||
|
||||
expose :commit do |repo_obj, options|
|
||||
if repo_obj.respond_to?(:commit)
|
||||
repo_obj.commit
|
||||
elsif options[:project]
|
||||
options[:project].repository.commit(repo_obj.target)
|
||||
end
|
||||
expose :commit do |repo_branch, options|
|
||||
options[:project].repository.commit(repo_branch.target)
|
||||
end
|
||||
|
||||
expose :protected do |repo_obj, options|
|
||||
if options[:project]
|
||||
options[:project].protected_branch? repo_obj.name
|
||||
end
|
||||
expose :protected do |repo_branch, options|
|
||||
options[:project].protected_branch? repo_branch.name
|
||||
end
|
||||
|
||||
expose :developers_can_push do |repo_obj, options|
|
||||
if options[:project]
|
||||
options[:project].developers_can_push_to_protected_branch? repo_obj.name
|
||||
end
|
||||
expose :developers_can_push do |repo_branch, options|
|
||||
options[:project].developers_can_push_to_protected_branch? repo_branch.name
|
||||
end
|
||||
|
||||
expose :developers_can_merge do |repo_obj, options|
|
||||
if options[:project]
|
||||
options[:project].developers_can_merge_to_protected_branch? repo_obj.name
|
||||
end
|
||||
expose :developers_can_merge do |repo_branch, options|
|
||||
options[:project].developers_can_merge_to_protected_branch? repo_branch.name
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -437,27 +427,14 @@ module API
|
|||
end
|
||||
|
||||
class RepoTag < Grape::Entity
|
||||
expose :name
|
||||
expose :message do |repo_obj, _options|
|
||||
if repo_obj.respond_to?(:message)
|
||||
repo_obj.message
|
||||
else
|
||||
nil
|
||||
end
|
||||
expose :name, :message
|
||||
|
||||
expose :commit do |repo_tag, options|
|
||||
options[:project].repository.commit(repo_tag.target)
|
||||
end
|
||||
|
||||
expose :commit do |repo_obj, options|
|
||||
if repo_obj.respond_to?(:commit)
|
||||
repo_obj.commit
|
||||
elsif options[:project]
|
||||
options[:project].repository.commit(repo_obj.target)
|
||||
end
|
||||
end
|
||||
|
||||
expose :release, using: Entities::Release do |repo_obj, options|
|
||||
if options[:project]
|
||||
options[:project].releases.find_by(tag: repo_obj.name)
|
||||
end
|
||||
expose :release, using: Entities::Release do |repo_tag, options|
|
||||
options[:project].releases.find_by(tag: repo_tag.name)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue