API: refactored and simplified error handling in merge requests API
This commit is contained in:
parent
cce35b6d05
commit
b5ef6d2268
2 changed files with 8 additions and 18 deletions
|
@ -4,21 +4,12 @@ module Gitlab
|
||||||
before { authenticate! }
|
before { authenticate! }
|
||||||
|
|
||||||
resource :projects do
|
resource :projects do
|
||||||
|
|
||||||
helpers do
|
helpers do
|
||||||
# If an error occurred this helper method provides an appropriate status code
|
def handle_merge_request_errors!(errors)
|
||||||
#
|
if errors[:project_access].any?
|
||||||
# Parameters:
|
error!(errors[:project_access], 422)
|
||||||
# merge_request_errors (required) - The errors collection of MR
|
|
||||||
#
|
|
||||||
def handle_merge_request_error(merge_request_errors)
|
|
||||||
if merge_request_errors[:target_branch].any?
|
|
||||||
bad_request!(:target_branch)
|
|
||||||
elsif merge_request_errors[:source_branch].any?
|
|
||||||
bad_request!(:source_branch)
|
|
||||||
elsif merge_request_errors[:base].any?
|
|
||||||
error!(merge_request_errors[:base], 422)
|
|
||||||
end
|
end
|
||||||
|
not_found!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -78,8 +69,7 @@ module Gitlab
|
||||||
merge_request.reload_code
|
merge_request.reload_code
|
||||||
present merge_request, with: Entities::MergeRequest
|
present merge_request, with: Entities::MergeRequest
|
||||||
else
|
else
|
||||||
handle_merge_request_error(merge_request.errors)
|
handle_merge_request_errors! merge_request.errors
|
||||||
not_found!
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -107,8 +97,7 @@ module Gitlab
|
||||||
merge_request.mark_as_unchecked
|
merge_request.mark_as_unchecked
|
||||||
present merge_request, with: Entities::MergeRequest
|
present merge_request, with: Entities::MergeRequest
|
||||||
else
|
else
|
||||||
handle_merge_request_error(merge_request.errors)
|
handle_merge_request_errors! merge_request.errors
|
||||||
not_found!
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -233,7 +233,7 @@ module Gitlab
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Delete project hook
|
# Deletes project hook. This is an idempotent function.
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
# id (required) - The ID of a project
|
# id (required) - The ID of a project
|
||||||
|
@ -248,6 +248,7 @@ module Gitlab
|
||||||
@hook = ProjectHook.find(params[:hook_id])
|
@hook = ProjectHook.find(params[:hook_id])
|
||||||
@hook.destroy
|
@hook.destroy
|
||||||
rescue
|
rescue
|
||||||
|
# ProjectHook can raise Error if hook_id not found
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue