Simplify entities for branches and tags API

This commit is contained in:
Robert Schilling 2016-07-19 13:30:23 +02:00
parent 1cd573ee7f
commit 3413f6fa50
2 changed files with 22 additions and 43 deletions

View file

@ -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)

View file

@ -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