Commit 549c4c2202307608773a10d8ce9a7dc978537de4

Authored by Alex Denisov
1 parent caef9ed1

API attributes refactored

lib/api/helpers.rb
... ... @@ -28,6 +28,14 @@ module Gitlab
28 28 end
29 29 end
30 30  
  31 + def existed_attributes(keys)
  32 + attrs = {}
  33 + keys.each do |key|
  34 + attrs[key] = params[key] if params[key].present?
  35 + end
  36 + attrs
  37 + end
  38 +
31 39 # error helpers
32 40  
33 41 def forbidden!
... ...
lib/api/issues.rb
... ... @@ -48,15 +48,10 @@ module Gitlab
48 48 # Example Request:
49 49 # POST /projects/:id/issues
50 50 post ":id/issues" do
51   - @issue = user_project.issues.new(
52   - title: params[:title],
53   - description: params[:description],
54   - assignee_id: params[:assignee_id],
55   - milestone_id: params[:milestone_id],
56   - label_list: params[:labels]
57   - )
  51 + attrs = existed_attributes [:title, :description, :assignee_id, :milestone_id]
  52 + attrs[:label_list] = params[:labels] if params[:labels].present?
  53 + @issue = user_project.issues.new attrs
58 54 @issue.author = current_user
59   -
60 55 if @issue.save
61 56 present @issue, with: Entities::Issue
62 57 else
... ... @@ -81,16 +76,9 @@ module Gitlab
81 76 @issue = user_project.issues.find(params[:issue_id])
82 77 authorize! :modify_issue, @issue
83 78  
84   - parameters = {
85   - title: (params[:title] || @issue.title),
86   - description: (params[:description] || @issue.description),
87   - assignee_id: (params[:assignee_id] || @issue.assignee_id),
88   - milestone_id: (params[:milestone_id] || @issue.milestone_id),
89   - label_list: (params[:labels] || @issue.label_list),
90   - closed: (params[:closed] || @issue.closed)
91   - }
92   -
93   - if @issue.update_attributes(parameters)
  79 + attrs = existed_attributes [:title, :description, :assignee_id, :milestone_id, :closed]
  80 + attrs[:label_list] = params[:labels] if params[:labels].present?
  81 + if @issue.update_attributes attrs
94 82 present @issue, with: Entities::Issue
95 83 else
96 84 not_found!
... ...
lib/api/milestones.rb
... ... @@ -36,12 +36,8 @@ module Gitlab
36 36 # Example Request:
37 37 # POST /projects/:id/milestones
38 38 post ":id/milestones" do
39   - @milestone = user_project.milestones.new(
40   - title: params[:title],
41   - description: params[:description],
42   - due_date: params[:due_date]
43   - )
44   -
  39 + attrs = existed_attributes [:title, :description, :due_date]
  40 + @milestone = user_project.milestones.new attrs
45 41 if @milestone.save
46 42 present @milestone, with: Entities::Milestone
47 43 else
... ... @@ -64,14 +60,8 @@ module Gitlab
64 60 authorize! :admin_milestone, user_project
65 61  
66 62 @milestone = user_project.milestones.find(params[:milestone_id])
67   - parameters = {
68   - title: (params[:title] || @milestone.title),
69   - description: (params[:description] || @milestone.description),
70   - due_date: (params[:due_date] || @milestone.due_date),
71   - closed: (params[:closed] || @milestone.closed)
72   - }
73   -
74   - if @milestone.update_attributes(parameters)
  63 + attrs = existed_attributes [:title, :description, :due_date, :closed]
  64 + if @milestone.update_attributes attrs
75 65 present @milestone, with: Entities::Milestone
76 66 else
77 67 not_found!
... ...
lib/api/projects.rb
... ... @@ -40,13 +40,16 @@ module Gitlab
40 40 post do
41 41 params[:code] ||= params[:name]
42 42 params[:path] ||= params[:name]
43   - project_attrs = {}
44   - params.each_pair do |k ,v|
45   - if Project.attribute_names.include? k
46   - project_attrs[k] = v
47   - end
48   - end
49   - @project = Project.create_by_user(project_attrs, current_user)
  43 + attrs = existed_attributes [:code,
  44 + :path,
  45 + :name,
  46 + :description,
  47 + :default_branch,
  48 + :issues_enabled,
  49 + :wall_enabled,
  50 + :merge_requests_enabled,
  51 + :wiki_enabled]
  52 + @project = Project.create_by_user(attrs, current_user)
50 53 if @project.saved?
51 54 present @project, with: Entities::Project
52 55 else
... ... @@ -204,12 +207,10 @@ module Gitlab
204 207 # Example Request:
205 208 # POST /projects/:id/snippets
206 209 post ":id/snippets" do
207   - @snippet = user_project.snippets.new(
208   - title: params[:title],
209   - file_name: params[:file_name],
210   - expires_at: params[:lifetime],
211   - content: params[:code]
212   - )
  210 + attrs = existed_attributes [:title, :file_name]
  211 + attrs[:expires_at] = params[:lifetime] if params[:lifetime].present?
  212 + attrs[:content] = params[:code] if params[:code].present?
  213 + @snippet = user_project.snippets.new attrs
213 214 @snippet.author = current_user
214 215  
215 216 if @snippet.save
... ... @@ -234,14 +235,11 @@ module Gitlab
234 235 @snippet = user_project.snippets.find(params[:snippet_id])
235 236 authorize! :modify_snippet, @snippet
236 237  
237   - parameters = {
238   - title: (params[:title] || @snippet.title),
239   - file_name: (params[:file_name] || @snippet.file_name),
240   - expires_at: (params[:lifetime] || @snippet.expires_at),
241   - content: (params[:code] || @snippet.content)
242   - }
  238 + attrs = existed_attributes [:title, :file_name]
  239 + attrs[:expires_at] = params[:lifetime] if params[:lifetime].present?
  240 + attrs[:content] = params[:code] if params[:code].present?
243 241  
244   - if @snippet.update_attributes(parameters)
  242 + if @snippet.update_attributes attrs
245 243 present @snippet, with: Entities::ProjectSnippet
246 244 else
247 245 not_found!
... ...