From 9f46488805e86b1bc341ea1620b866016c2ce5ed Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 20 May 2020 14:34:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-0-stable-ee --- lib/api/project_snippets.rb | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) (limited to 'lib/api/project_snippets.rb') diff --git a/lib/api/project_snippets.rb b/lib/api/project_snippets.rb index e8234a9285c..68f4a0dcb65 100644 --- a/lib/api/project_snippets.rb +++ b/lib/api/project_snippets.rb @@ -11,6 +11,7 @@ module API requires :id, type: String, desc: 'The ID of a project' end resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do + helpers Helpers::SnippetsHelpers helpers do def check_snippets_enabled forbidden! unless user_project.feature_available?(:snippets, current_user) @@ -54,30 +55,27 @@ module API success Entities::ProjectSnippet end params do - requires :title, type: String, desc: 'The title of the snippet' + requires :title, type: String, allow_blank: false, desc: 'The title of the snippet' requires :file_name, type: String, desc: 'The file name of the snippet' - optional :code, type: String, allow_blank: false, desc: 'The content of the snippet (deprecated in favor of "content")' - optional :content, type: String, allow_blank: false, desc: 'The content of the snippet' + requires :content, type: String, allow_blank: false, desc: 'The content of the snippet' optional :description, type: String, desc: 'The description of a snippet' requires :visibility, type: String, values: Gitlab::VisibilityLevel.string_values, desc: 'The visibility of the snippet' - mutually_exclusive :code, :content end post ":id/snippets" do authorize! :create_snippet, user_project snippet_params = declared_params(include_missing: false).merge(request: request, api: true) - snippet_params[:content] = snippet_params.delete(:code) if snippet_params[:code].present? service_response = ::Snippets::CreateService.new(user_project, current_user, snippet_params).execute snippet = service_response.payload[:snippet] - render_spam_error! if snippet.spam? - - if snippet.persisted? + if service_response.success? present snippet, with: Entities::ProjectSnippet else - render_validation_error!(snippet) + render_spam_error! if snippet.spam? + + render_api_error!({ error: service_response.message }, service_response.http_status) end end @@ -86,16 +84,14 @@ module API end params do requires :snippet_id, type: Integer, desc: 'The ID of a project snippet' - optional :title, type: String, desc: 'The title of the snippet' + optional :title, type: String, allow_blank: false, desc: 'The title of the snippet' optional :file_name, type: String, desc: 'The file name of the snippet' - optional :code, type: String, allow_blank: false, desc: 'The content of the snippet (deprecated in favor of "content")' optional :content, type: String, allow_blank: false, desc: 'The content of the snippet' optional :description, type: String, desc: 'The description of a snippet' optional :visibility, type: String, values: Gitlab::VisibilityLevel.string_values, desc: 'The visibility of the snippet' - at_least_one_of :title, :file_name, :code, :content, :visibility_level - mutually_exclusive :code, :content + at_least_one_of :title, :file_name, :content, :visibility_level end # rubocop: disable CodeReuse/ActiveRecord put ":id/snippets/:snippet_id" do @@ -107,17 +103,15 @@ module API snippet_params = declared_params(include_missing: false) .merge(request: request, api: true) - snippet_params[:content] = snippet_params.delete(:code) if snippet_params[:code].present? - service_response = ::Snippets::UpdateService.new(user_project, current_user, snippet_params).execute(snippet) snippet = service_response.payload[:snippet] - render_spam_error! if snippet.spam? - - if snippet.valid? + if service_response.success? present snippet, with: Entities::ProjectSnippet else - render_validation_error!(snippet) + render_spam_error! if snippet.spam? + + render_api_error!({ error: service_response.message }, service_response.http_status) end end # rubocop: enable CodeReuse/ActiveRecord @@ -155,7 +149,7 @@ module API env['api.format'] = :txt content_type 'text/plain' - present snippet.content + present content_for(snippet) end # rubocop: enable CodeReuse/ActiveRecord -- cgit v1.2.3