Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Ziebell <sebastian.ziebell@asquera.de>2013-02-13 15:09:16 +0400
committerSebastian Ziebell <sebastian.ziebell@asquera.de>2013-02-13 15:09:16 +0400
commitfd01f3aacda1e7e1966489e7d9a31f89745cd509 (patch)
treeb53e600584b1bcb1294771defc183790441da2c5 /lib/api/projects.rb
parent375caeefcfb2672c8fdce18cf6f35372729d0c43 (diff)
API: fixes a few return codes for project snippets
When using project snippets via API the functions now provide status codes for different situations other then only returning 404 error. If required parameters are missing, e.g. `title` when creating a project snippet a 400 (Bad request) error is returned. The snippet delete function now is idempotent and returns a 200 (Ok) regardless if the snippet with the given id is available or not. Changing return codes of these functions has the advantage that the 404 error is used only for resources, which are not available. Tests added to check these status codes when handling project snippets.
Diffstat (limited to 'lib/api/projects.rb')
-rw-r--r--lib/api/projects.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index f8c9701ecaf..02f10b60cb7 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -368,6 +368,10 @@ module Gitlab
post ":id/snippets" do
authorize! :write_snippet, user_project
+ error!("Title not given", 400) if !params[:title].present?
+ error!("Filename not given", 400) if !params[:file_name].present?
+ error!("Code not given", 400) if !params[:code].present?
+
attrs = attributes_for_keys [:title, :file_name]
attrs[:expires_at] = params[:lifetime] if params[:lifetime].present?
attrs[:content] = params[:code] if params[:code].present?
@@ -415,10 +419,12 @@ module Gitlab
# Example Request:
# DELETE /projects/:id/snippets/:snippet_id
delete ":id/snippets/:snippet_id" do
- @snippet = user_project.snippets.find(params[:snippet_id])
- authorize! :modify_snippet, @snippet
-
- @snippet.destroy
+ begin
+ @snippet = user_project.snippets.find(params[:snippet_id])
+ authorize! :modify_snippet, user_project
+ @snippet.destroy
+ rescue
+ end
end
# Get a raw project snippet