summaryrefslogtreecommitdiff
path: root/lib/api/milestones.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/api/milestones.rb')
-rw-r--r--lib/api/milestones.rb20
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/api/milestones.rb b/lib/api/milestones.rb
index c5cd73943fb..39efa1b176b 100644
--- a/lib/api/milestones.rb
+++ b/lib/api/milestones.rb
@@ -3,17 +3,33 @@ module API
class Milestones < Grape::API
before { authenticate! }
+ helpers do
+ def filter_milestones_state(milestones, state)
+ case state
+ when 'active' then milestones.active
+ when 'closed' then milestones.closed
+ else milestones
+ end
+ end
+ end
+
resource :projects do
# Get a list of project milestones
#
# Parameters:
- # id (required) - The ID of a project
+ # id (required) - The ID of a project
+ # state (optional) - Return "active" or "closed" milestones
# Example Request:
# GET /projects/:id/milestones
+ # GET /projects/:id/milestones?state=active
+ # GET /projects/:id/milestones?state=closed
get ":id/milestones" do
authorize! :read_milestone, user_project
- present paginate(user_project.milestones), with: Entities::Milestone
+ milestones = user_project.milestones
+ milestones = filter_milestones_state(milestones, params[:state]) unless params[:state].nil?
+
+ present paginate(milestones), with: Entities::Milestone
end
# Get a single project milestone