summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRobert Schilling <rschilling@student.tugraz.at>2017-02-21 10:23:15 +0100
committerRobert Schilling <rschilling@student.tugraz.at>2017-02-21 12:01:18 +0100
commit32691ffd4a87e3492fa2d24d904602683bcf8ffb (patch)
tree35109708d62c1eae07da4fa0f5681cea359bc60d /lib
parent1ef911f0e086badcb717c68cd1817c68ed8b4d8d (diff)
downloadgitlab-ce-32691ffd4a87e3492fa2d24d904602683bcf8ffb.tar.gz
Backport Todos API to V3api-todos-restful
Diffstat (limited to 'lib')
-rw-r--r--lib/api/api.rb1
-rw-r--r--lib/api/v3/todos.rb28
2 files changed, 29 insertions, 0 deletions
diff --git a/lib/api/api.rb b/lib/api/api.rb
index dbb7271ccbd..e729c07f8c3 100644
--- a/lib/api/api.rb
+++ b/lib/api/api.rb
@@ -19,6 +19,7 @@ module API
mount ::API::V3::Repositories
mount ::API::V3::SystemHooks
mount ::API::V3::Tags
+ mount ::API::V3::Todos
mount ::API::V3::Templates
mount ::API::V3::Users
end
diff --git a/lib/api/v3/todos.rb b/lib/api/v3/todos.rb
new file mode 100644
index 00000000000..4f9b5fe72a6
--- /dev/null
+++ b/lib/api/v3/todos.rb
@@ -0,0 +1,28 @@
+module API
+ module V3
+ class Todos < Grape::API
+ before { authenticate! }
+
+ resource :todos do
+ desc 'Mark a todo as done' do
+ success ::API::Entities::Todo
+ end
+ params do
+ requires :id, type: Integer, desc: 'The ID of the todo being marked as done'
+ end
+ delete ':id' do
+ todo = current_user.todos.find(params[:id])
+ TodoService.new.mark_todos_as_done([todo], current_user)
+
+ present todo.reload, with: ::API::Entities::Todo, current_user: current_user
+ end
+
+ desc 'Mark all todos as done'
+ delete do
+ todos = TodosFinder.new(current_user, params).execute
+ TodoService.new.mark_todos_as_done(todos, current_user)
+ end
+ end
+ end
+ end
+end