Commit b5ef6d226864d3ea132d2c6e97b74b51f2b64a6f

Authored by Sebastian Ziebell
1 parent cce35b6d

API: refactored and simplified error handling in merge requests API

Showing 2 changed files with 8 additions and 18 deletions   Show diff stats
lib/api/merge_requests.rb
... ... @@ -4,21 +4,12 @@ module Gitlab
4 4 before { authenticate! }
5 5  
6 6 resource :projects do
7   -
8 7 helpers do
9   - # If an error occurred this helper method provides an appropriate status code
10   - #
11   - # Parameters:
12   - # merge_request_errors (required) - The errors collection of MR
13   - #
14   - def handle_merge_request_error(merge_request_errors)
15   - if merge_request_errors[:target_branch].any?
16   - bad_request!(:target_branch)
17   - elsif merge_request_errors[:source_branch].any?
18   - bad_request!(:source_branch)
19   - elsif merge_request_errors[:base].any?
20   - error!(merge_request_errors[:base], 422)
  8 + def handle_merge_request_errors!(errors)
  9 + if errors[:project_access].any?
  10 + error!(errors[:project_access], 422)
21 11 end
  12 + not_found!
22 13 end
23 14 end
24 15  
... ... @@ -78,8 +69,7 @@ module Gitlab
78 69 merge_request.reload_code
79 70 present merge_request, with: Entities::MergeRequest
80 71 else
81   - handle_merge_request_error(merge_request.errors)
82   - not_found!
  72 + handle_merge_request_errors! merge_request.errors
83 73 end
84 74 end
85 75  
... ... @@ -107,8 +97,7 @@ module Gitlab
107 97 merge_request.mark_as_unchecked
108 98 present merge_request, with: Entities::MergeRequest
109 99 else
110   - handle_merge_request_error(merge_request.errors)
111   - not_found!
  100 + handle_merge_request_errors! merge_request.errors
112 101 end
113 102 end
114 103  
... ...
lib/api/projects.rb
... ... @@ -233,7 +233,7 @@ module Gitlab
233 233 end
234 234 end
235 235  
236   - # Delete project hook
  236 + # Deletes project hook. This is an idempotent function.
237 237 #
238 238 # Parameters:
239 239 # id (required) - The ID of a project
... ... @@ -248,6 +248,7 @@ module Gitlab
248 248 @hook = ProjectHook.find(params[:hook_id])
249 249 @hook.destroy
250 250 rescue
  251 + # ProjectHook can raise Error if hook_id not found
251 252 end
252 253 end
253 254  
... ...