Commit ee6187bd554f6f257600a67f65f8af95cf9afa9a

Authored by Nihad Abbasov
1 parent 2a98a060

API: ability to create a wall note

1 v 3.2.0 1 v 3.2.0
2 - - [API] create notes for snippets and issues  
3 - - [API] list notes for snippets and issues  
4 - - [API] list project wall notes 2 + - [API] list, create issue notes
  3 + - [API] list, create snippet notes
  4 + - [API] list, create wall notes
5 - Remove project code - use path instead 5 - Remove project code - use path instead
6 - added username field to user 6 - added username field to user
7 - rake task to fill usernames based on emails create namespaces for users 7 - rake task to fill usernames based on emails create namespaces for users
doc/api/notes.md
@@ -87,6 +87,22 @@ Parameters: @@ -87,6 +87,22 @@ Parameters:
87 87
88 ## New note 88 ## New note
89 89
  90 +### New wall note
  91 +
  92 +Create a new wall note.
  93 +
  94 +```
  95 +POST /projects/:id/notes
  96 +```
  97 +
  98 +Parameters:
  99 +
  100 ++ `id` (required) - The ID or code name of a project
  101 ++ `body` (required) - The content of a note
  102 +
  103 +Will return created note with status `201 Created` on success, or `404 Not found` on fail.
  104 +
  105 +
90 ### New issue note 106 ### New issue note
91 107
92 Create a new issue note. 108 Create a new issue note.
lib/api/notes.rb
@@ -17,6 +17,24 @@ module Gitlab @@ -17,6 +17,24 @@ module Gitlab
17 present paginate(@notes), with: Entities::Note 17 present paginate(@notes), with: Entities::Note
18 end 18 end
19 19
  20 + # Create a new project wall note
  21 + #
  22 + # Parameters:
  23 + # id (required) - The ID or code name of a project
  24 + # body (required) - The content of a note
  25 + # Example Request:
  26 + # POST /projects/:id/notes
  27 + post ":id/notes" do
  28 + @note = user_project.notes.new(note: params[:body])
  29 + @note.author = current_user
  30 +
  31 + if @note.save
  32 + present @note, with: Entities::Note
  33 + else
  34 + not_found!
  35 + end
  36 + end
  37 +
20 NOTEABLE_TYPES.each do |noteable_type| 38 NOTEABLE_TYPES.each do |noteable_type|
21 noteables_str = noteable_type.to_s.underscore.pluralize 39 noteables_str = noteable_type.to_s.underscore.pluralize
22 noteable_id_str = "#{noteable_type.to_s.underscore}_id" 40 noteable_id_str = "#{noteable_type.to_s.underscore}_id"
spec/requests/api/notes_spec.rb
@@ -30,6 +30,14 @@ describe Gitlab::API do @@ -30,6 +30,14 @@ describe Gitlab::API do
30 end 30 end
31 end 31 end
32 32
  33 + describe "POST /projects/:id/notes" do
  34 + it "should create a new wall note" do
  35 + post api("/projects/#{project.id}/notes", user), body: 'hi!'
  36 + response.status.should == 201
  37 + json_response['body'].should == 'hi!'
  38 + end
  39 + end
  40 +
33 describe "GET /projects/:id/noteable/:noteable_id/notes" do 41 describe "GET /projects/:id/noteable/:noteable_id/notes" do
34 context "when noteable is an Issue" do 42 context "when noteable is an Issue" do
35 it "should return an array of issue notes" do 43 it "should return an array of issue notes" do