diff options
author | Rémy Coutable <remy@rymai.me> | 2016-11-14 11:43:34 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2016-11-14 11:43:34 +0000 |
commit | 763a89a301e36e102ecefe6cfa452fc57cd661c2 (patch) | |
tree | df190cb4d7402222d5c6e8a16b1cc06065937762 | |
parent | 0f48abf24b0ba34aebfc1d0d52e9e22648b7da1a (diff) | |
parent | f0b42c1079341ed0245f5e3971dd4da0f8760c38 (diff) | |
download | gitlab-ce-763a89a301e36e102ecefe6cfa452fc57cd661c2.tar.gz |
Merge branch 'grapify-subscription-api' into 'master'
Grapify subscription API
## What are the relevant issue numbers?
Related to #22928
See merge request !7380
-rw-r--r-- | lib/api/subscriptions.rb | 37 |
1 files changed, 14 insertions, 23 deletions
diff --git a/lib/api/subscriptions.rb b/lib/api/subscriptions.rb index c49e2a21b82..00a79c24f96 100644 --- a/lib/api/subscriptions.rb +++ b/lib/api/subscriptions.rb @@ -9,23 +9,20 @@ module API '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 subscribable_types.each do |type, finder| type_singularized = type.singularize - type_id_str = :"#{type_singularized}_id" entity_class = Entities.const_get(type_singularized.camelcase) - # Subscribe to a resource - # - # Parameters: - # id (required) - The ID of a project - # subscribable_id (required) - The ID of a resource - # 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) + desc 'Subscribe to a resource' do + success entity_class + end + post ":id/#{type}/:subscribable_id/subscription" do + resource = instance_exec(params[:subscribable_id], &finder) if resource.subscribed?(current_user) not_modified! @@ -35,17 +32,11 @@ module API end end - # Unsubscribe from a resource - # - # Parameters: - # id (required) - The ID of a project - # subscribable_id (required) - The ID of a resource - # 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) + desc 'Unsubscribe from a resource' do + success entity_class + end + delete ":id/#{type}/:subscribable_id/subscription" do + resource = instance_exec(params[:subscribable_id], &finder) if !resource.subscribed?(current_user) not_modified! |