summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHannes Rosenögger <123haynes@gmail.com>2015-04-03 13:18:55 +0000
committerHannes Rosenögger <123haynes@gmail.com>2015-04-03 13:18:55 +0000
commit965b92a725e5570e09bdd4609d4ddd896fddcbab (patch)
tree4ba68ed5a8ab3eb7e817f8bf4a78a22e6ffc833e
parent9157985cfce1391973673ea278dc7506a90f8f53 (diff)
parentf04549056806d2bcb63441ebdffe1032711e83c8 (diff)
downloadgitlab-ce-965b92a725e5570e09bdd4609d4ddd896fddcbab.tar.gz
Merge branch 'feature_expose_project_labels' into 'master'
Exposing Project Labels in the REST API The intent here is to expose the tag_list property of the Project entity over the REST API so that any project searches include the information. The specific reason I've implemented this change is for an environment in which multiple gitlab servers exist, where a central portal to the projects that are spread around the network will be useful. Having access to filtering on this fairly large project list based on their labels, will be of great use. This satisfies the feature request http://feedback.gitlab.com/forums/176466-general/suggestions/6325819-project-labels-via-api The change was made in the `lib/api/entities.rb` file. The output of a `GET` to something like `/projects` or `/projects/7` is now: ```javascript { "id": 7, "description": "Veritatis est eaque voluptas magni expedita.", "default_branch": "master", **"tag_list": [ "typeahead", "twitter" ],** "public": false, "archived": false, "visibility_level": 0, ... } ``` See merge request !329
-rw-r--r--CHANGELOG1
-rw-r--r--doc/api/projects.md12
-rw-r--r--lib/api/entities.rb2
-rw-r--r--spec/requests/api/projects_spec.rb9
4 files changed, 22 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 1934d03634a..7fdd7e38a93 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -58,6 +58,7 @@ v 7.10.0 (unreleased)
- Fix "Hello @username." references not working by no longer allowing usernames to end in period.
- Archive repositories in background worker.
- Import GitHub, Bitbucket or GitLab.com projects owned by authenticated user into current namespace.
+ - Project labels are now available over the API under the "tag_list" field (Cristian Medina)
v 7.9.2
diff --git a/doc/api/projects.md b/doc/api/projects.md
index 7fe244477db..55d525fef66 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -44,6 +44,10 @@ Parameters:
"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
"web_url": "http://example.com/diaspora/diaspora-client",
+ "tag_list": [
+ "example",
+ "disapora client"
+ ],
"owner": {
"id": 3,
"name": "Diaspora",
@@ -80,6 +84,10 @@ Parameters:
"ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
"http_url_to_repo": "http://example.com/brightbox/puppet.git",
"web_url": "http://example.com/brightbox/puppet",
+ "tag_list": [
+ "example",
+ "puppet"
+ ],
"owner": {
"id": 4,
"name": "Brightbox",
@@ -163,6 +171,10 @@ Parameters:
"ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
"http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
"web_url": "http://example.com/diaspora/diaspora-project-site",
+ "tag_list": [
+ "example",
+ "disapora project"
+ ],
"owner": {
"id": 3,
"name": "Diaspora",
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 489be210784..51cb934616b 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -46,7 +46,7 @@ module API
end
class Project < Grape::Entity
- expose :id, :description, :default_branch
+ expose :id, :description, :default_branch, :tag_list
expose :public?, as: :public
expose :archived?, as: :archived
expose :visibility_level, :ssh_url_to_repo, :http_url_to_repo, :web_url
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index b713f1fe898..cc387378d3a 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -57,7 +57,14 @@ describe API::API, api: true do
expect(json_response.first['name']).to eq(project.name)
expect(json_response.first['owner']['username']).to eq(user.username)
end
-
+
+ it 'should include the project labels as the tag_list' do
+ get api('/projects', user)
+ response.status.should == 200
+ json_response.should be_an Array
+ json_response.first.keys.should include('tag_list')
+ end
+
context 'and using search' do
it 'should return searched project' do
get api('/projects', user), { search: project.name }