Merge branch 'grapify-subscription-api' into 'master'

Grapify subscription API

## What are the relevant issue numbers?

Related to #22928

See merge request !7380
This commit is contained in:
Rémy Coutable 2016-11-14 11:43:34 +00:00
commit 763a89a301

View file

@ -9,23 +9,20 @@ module API
'labels' => proc { |id| find_project_label(id) }, 'labels' => proc { |id| find_project_label(id) },
} }
params do
requires :id, type: String, desc: 'The ID of a project'
requires :subscribable_id, type: String, desc: 'The ID of a resource'
end
resource :projects do resource :projects do
subscribable_types.each do |type, finder| subscribable_types.each do |type, finder|
type_singularized = type.singularize type_singularized = type.singularize
type_id_str = :"#{type_singularized}_id"
entity_class = Entities.const_get(type_singularized.camelcase) entity_class = Entities.const_get(type_singularized.camelcase)
# Subscribe to a resource desc 'Subscribe to a resource' do
# success entity_class
# Parameters: end
# id (required) - The ID of a project post ":id/#{type}/:subscribable_id/subscription" do
# subscribable_id (required) - The ID of a resource resource = instance_exec(params[:subscribable_id], &finder)
# Example Request:
# POST /projects/:id/labels/:subscribable_id/subscription
# POST /projects/:id/issues/:subscribable_id/subscription
# POST /projects/:id/merge_requests/:subscribable_id/subscription
post ":id/#{type}/:#{type_id_str}/subscription" do
resource = instance_exec(params[type_id_str], &finder)
if resource.subscribed?(current_user) if resource.subscribed?(current_user)
not_modified! not_modified!
@ -35,17 +32,11 @@ module API
end end
end end
# Unsubscribe from a resource desc 'Unsubscribe from a resource' do
# success entity_class
# Parameters: end
# id (required) - The ID of a project delete ":id/#{type}/:subscribable_id/subscription" do
# subscribable_id (required) - The ID of a resource resource = instance_exec(params[:subscribable_id], &finder)
# Example Request:
# DELETE /projects/:id/labels/:subscribable_id/subscription
# DELETE /projects/:id/issues/:subscribable_id/subscription
# DELETE /projects/:id/merge_requests/:subscribable_id/subscription
delete ":id/#{type}/:#{type_id_str}/subscription" do
resource = instance_exec(params[type_id_str], &finder)
if !resource.subscribed?(current_user) if !resource.subscribed?(current_user)
not_modified! not_modified!