summaryrefslogtreecommitdiff
path: root/lib/api/issues.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/issues.rb')
-rw-r--r--lib/api/issues.rb28
1 files changed, 16 insertions, 12 deletions
diff --git a/lib/api/issues.rb b/lib/api/issues.rb
index d0772c70ffb..4e21815fa35 100644
--- a/lib/api/issues.rb
+++ b/lib/api/issues.rb
@@ -220,18 +220,22 @@ module API
issue_params = convert_parameters_from_legacy_format(issue_params)
- issue = ::Issues::CreateService.new(user_project,
- current_user,
- issue_params.merge(request: request, api: true)).execute
-
- if issue.spam?
- render_api_error!({ error: 'Spam detected' }, 400)
- end
-
- if issue.valid?
- present issue, with: Entities::Issue, current_user: current_user, project: user_project
- else
- render_validation_error!(issue)
+ begin
+ issue = ::Issues::CreateService.new(user_project,
+ current_user,
+ issue_params.merge(request: request, api: true)).execute
+
+ if issue.spam?
+ render_api_error!({ error: 'Spam detected' }, 400)
+ end
+
+ if issue.valid?
+ present issue, with: Entities::Issue, current_user: current_user, project: user_project
+ else
+ render_validation_error!(issue)
+ end
+ rescue ::ActiveRecord::RecordNotUnique
+ render_api_error!('Duplicated issue', 409)
end
end