diff options
author | Stan Hu <stanhu@gmail.com> | 2019-08-27 12:52:27 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-08-28 22:54:07 -0700 |
commit | fc52421b552dace1a8d1410adc23b7bfddc5a580 (patch) | |
tree | 816c2b226b7a65eccc1acdbd9bd403369fb073ce /lib/api | |
parent | 549e95b8f921dfb30bc7982e9957ce9ccdfd916e (diff) | |
download | gitlab-ce-sh-support-content-for-snippets-api.tar.gz |
Standardize use of `content` parameter in snippets APIsh-support-content-for-snippets-api
There was some confusion over whether `code` or `content` is the right
parameter for snippets. Internally, the database stores
`content`. However:
1. Project snippets use `code`. `code` gets remapped in `content` in
`lib/api/project_snippets.rb`.
2. Personal snippets use `content`.
To unify these APIs, allow an alias of `content` to work for project
snippets.
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/66673
Diffstat (limited to 'lib/api')
-rw-r--r-- | lib/api/project_snippets.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/api/project_snippets.rb b/lib/api/project_snippets.rb index a607df411a6..b4545295d54 100644 --- a/lib/api/project_snippets.rb +++ b/lib/api/project_snippets.rb @@ -51,16 +51,18 @@ module API params do requires :title, type: String, desc: 'The title of the snippet' requires :file_name, type: String, desc: 'The file name of the snippet' - requires :code, type: String, allow_blank: false, desc: 'The content 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' 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_project_snippet, user_project - snippet_params = declared_params.merge(request: request, api: true) - snippet_params[:content] = snippet_params.delete(:code) + snippet_params = declared_params(include_missing: false).merge(request: request, api: true) + snippet_params[:content] = snippet_params.delete(:code) if snippet_params[:code].present? snippet = CreateSnippetService.new(user_project, current_user, snippet_params).execute @@ -80,12 +82,14 @@ module API requires :snippet_id, type: Integer, desc: 'The ID of a project snippet' optional :title, type: String, 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' + 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, :visibility_level + at_least_one_of :title, :file_name, :code, :content, :visibility_level + mutually_exclusive :code, :content end # rubocop: disable CodeReuse/ActiveRecord put ":id/snippets/:snippet_id" do |