From 2a98a060caccd82ec8cd9bcead886142f766c069 Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 29 Nov 2012 14:41:24 -0800 Subject: [PATCH 1/2] API: don't expose 'updated_at' for notes --- doc/api/notes.md | 3 +-- lib/api/entities.rb | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/api/notes.md b/doc/api/notes.md index 3d8309d3..24f86cca 100644 --- a/doc/api/notes.md +++ b/doc/api/notes.md @@ -20,8 +20,7 @@ GET /projects/:id/notes "blocked": false, "created_at": "2012-05-23T08:00:58Z" }, - "updated_at":"2012-11-27T19:16:44Z", - "created_at":"2012-11-27T19:16:44Z" + "created_at": "2012-11-27T19:16:44Z" } ] ``` diff --git a/lib/api/entities.rb b/lib/api/entities.rb index b792d3fb..f985636a 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -73,7 +73,7 @@ module Gitlab expose :id expose :note, as: :body expose :author, using: Entities::UserBasic - expose :updated_at, :created_at + expose :created_at end class MRNote < Grape::Entity From ee6187bd554f6f257600a67f65f8af95cf9afa9a Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 29 Nov 2012 15:52:56 -0800 Subject: [PATCH 2/2] API: ability to create a wall note --- CHANGELOG | 6 +++--- doc/api/notes.md | 16 ++++++++++++++++ lib/api/notes.rb | 18 ++++++++++++++++++ spec/requests/api/notes_spec.rb | 8 ++++++++ 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 4b28da46..b88d11ca 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,7 +1,7 @@ v 3.2.0 - - [API] create notes for snippets and issues - - [API] list notes for snippets and issues - - [API] list project wall notes + - [API] list, create issue notes + - [API] list, create snippet notes + - [API] list, create wall notes - Remove project code - use path instead - added username field to user - rake task to fill usernames based on emails create namespaces for users diff --git a/doc/api/notes.md b/doc/api/notes.md index 24f86cca..97899fa0 100644 --- a/doc/api/notes.md +++ b/doc/api/notes.md @@ -87,6 +87,22 @@ Parameters: ## New note +### New wall note + +Create a new wall note. + +``` +POST /projects/:id/notes +``` + +Parameters: + ++ `id` (required) - The ID or code name of a project ++ `body` (required) - The content of a note + +Will return created note with status `201 Created` on success, or `404 Not found` on fail. + + ### New issue note Create a new issue note. diff --git a/lib/api/notes.rb b/lib/api/notes.rb index 924eeaa3..b47ff5c3 100644 --- a/lib/api/notes.rb +++ b/lib/api/notes.rb @@ -17,6 +17,24 @@ module Gitlab present paginate(@notes), with: Entities::Note end + # Create a new project wall note + # + # Parameters: + # id (required) - The ID or code name of a project + # body (required) - The content of a note + # Example Request: + # POST /projects/:id/notes + post ":id/notes" do + @note = user_project.notes.new(note: params[:body]) + @note.author = current_user + + if @note.save + present @note, with: Entities::Note + else + not_found! + end + end + NOTEABLE_TYPES.each do |noteable_type| noteables_str = noteable_type.to_s.underscore.pluralize noteable_id_str = "#{noteable_type.to_s.underscore}_id" diff --git a/spec/requests/api/notes_spec.rb b/spec/requests/api/notes_spec.rb index b7c8ffaf..dc02e7a3 100644 --- a/spec/requests/api/notes_spec.rb +++ b/spec/requests/api/notes_spec.rb @@ -30,6 +30,14 @@ describe Gitlab::API do end end + describe "POST /projects/:id/notes" do + it "should create a new wall note" do + post api("/projects/#{project.id}/notes", user), body: 'hi!' + response.status.should == 201 + json_response['body'].should == 'hi!' + end + end + describe "GET /projects/:id/noteable/:noteable_id/notes" do context "when noteable is an Issue" do it "should return an array of issue notes" do