Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-04 16:55:14 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-04 16:55:14 +0400
commit260fd2127c4013f93ba343d86921775c5efc673a (patch)
tree93b682d2adeba9045d5c5abe53f894a475349179 /lib
parent9bb1d8fc8d2119ed46ac2e11ed9d295a61cf7a28 (diff)
parent0bcc323928fa3a794aea5ce190319ebea89ca1ad (diff)
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce
Diffstat (limited to 'lib')
-rw-r--r--lib/api/issues.rb27
1 files changed, 24 insertions, 3 deletions
diff --git a/lib/api/issues.rb b/lib/api/issues.rb
index 15a49b452bd..e4a66eceadd 100644
--- a/lib/api/issues.rb
+++ b/lib/api/issues.rb
@@ -11,6 +11,10 @@ module API
else issues.order('id DESC')
end
end
+
+ def filter_issues_labels(issues, labels)
+ issues.includes(:labels).where("labels.title" => labels.split(','))
+ end
end
resource :issues do
@@ -18,13 +22,21 @@ module API
#
# Parameters:
# state (optional) - Return "opened" or "closed" issues
- #
+ # labels (optional) - Comma-separated list of label names
+
# Example Requests:
# GET /issues
# GET /issues?state=opened
# GET /issues?state=closed
+ # GET /issues?labels=foo
+ # GET /issues?labels=foo,bar
+ # GET /issues?labels=foo,bar&state=opened
get do
- present paginate(filter_issues_state(current_user.issues, params['state'])), with: Entities::Issue
+ issues = current_user.issues
+ issues = filter_issues_state(issues, params[:state]) unless params[:state].nil?
+ issues = filter_issues_labels(issues, params[:labels]) unless params[:labels].nil?
+
+ present paginate(issues), with: Entities::Issue
end
end
@@ -34,13 +46,22 @@ module API
# Parameters:
# id (required) - The ID of a project
# state (optional) - Return "opened" or "closed" issues
+ # labels (optional) - Comma-separated list of label names
#
# Example Requests:
# GET /projects/:id/issues
# GET /projects/:id/issues?state=opened
# GET /projects/:id/issues?state=closed
+ # GET /projects/:id/issues
+ # GET /projects/:id/issues?labels=foo
+ # GET /projects/:id/issues?labels=foo,bar
+ # GET /projects/:id/issues?labels=foo,bar&state=opened
get ":id/issues" do
- present paginate(filter_issues_state(user_project.issues, params['state'])), with: Entities::Issue
+ issues = user_project.issues
+ issues = filter_issues_state(issues, params[:state]) unless params[:state].nil?
+ issues = filter_issues_labels(issues, params[:labels]) unless params[:labels].nil?
+
+ present paginate(issues), with: Entities::Issue
end
# Get a single project issue