diff options
author | Jarka Kadlecova <jarka@gitlab.com> | 2017-02-09 15:28:19 +0100 |
---|---|---|
committer | Jarka Kadlecova <jarka@gitlab.com> | 2017-03-02 13:17:39 +0100 |
commit | 17ee1e1a63520f88663697608920e816aa7128c4 (patch) | |
tree | 84e0d25fc2988cbaf669cf5f501786411487ccc2 /lib/api/v3 | |
parent | 6efa5dc04a2e3c64664676e30962760ebf99b72a (diff) | |
download | gitlab-ce-17ee1e1a63520f88663697608920e816aa7128c4.tar.gz |
Use iids as filter parameter
Diffstat (limited to 'lib/api/v3')
-rw-r--r-- | lib/api/v3/milestones.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/api/v3/milestones.rb b/lib/api/v3/milestones.rb new file mode 100644 index 00000000000..bbc29c40ee2 --- /dev/null +++ b/lib/api/v3/milestones.rb @@ -0,0 +1,43 @@ +module API + module V3 + class Milestones < Grape::API + include PaginationParams + + 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 + + params do + requires :id, type: String, desc: 'The ID of a project' + end + resource :projects do + desc 'Get a list of project milestones' do + success ::API::Entities::Milestone + end + params do + optional :state, type: String, values: %w[active closed all], default: 'all', + desc: 'Return "active", "closed", or "all" milestones' + optional :iid, type: Array[Integer], desc: 'The IID of the milestone' + use :pagination + end + get ":id/milestones" do + authorize! :read_milestone, user_project + + milestones = user_project.milestones + milestones = filter_milestones_state(milestones, params[:state]) + milestones = filter_by_iid(milestones, params[:iid]) if params[:iid].present? + + present paginate(milestones), with: ::API::Entities::Milestone + end + end + end + end +end |