BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
4b6b68d0
Commit
4b6b68d0
authored
Mar 19, 2018
by
Robert Speicher
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'api-delimiter' into 'master'
Optional '/-/' delimiter for search API See merge request gitlab-org/gitlab-ce!17750
parents
5d996c70
2370ff85
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
39 deletions
+44
-39
optional-api-delimiter.yml
changelogs/unreleased/optional-api-delimiter.yml
+5
-0
search.md
doc/api/search.md
+13
-13
search.rb
lib/api/search.rb
+2
-2
search_spec.rb
spec/requests/api/search_spec.rb
+24
-24
No files found.
changelogs/unreleased/optional-api-delimiter.yml
0 → 100644
View file @
4b6b68d0
---
title
:
Make /-/ delimiter optional for search endpoints
merge_request
:
author
:
type
:
changed
doc/api/search.md
View file @
4b6b68d0
...
...
@@ -289,7 +289,7 @@ Search within the specified group.
If a user is not a member of a group and the group is private, a
`GET`
request on that group will result to a
`404`
status code.
```
GET /groups/:id/
-/
search
GET /groups/:id/search
```
| Attribute | Type | Required | Description |
...
...
@@ -305,7 +305,7 @@ The response depends on the requested scope.
### Scope: projects
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/groups/3/
-/
search?scope
=
projects&search
=
flight
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/groups/3/search?scope
=
projects&search
=
flight
```
Example response:
...
...
@@ -336,7 +336,7 @@ Example response:
### Scope: issues
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/groups/3/
-/
search?scope
=
issues&search
=
file
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/groups/3/search?scope
=
issues&search
=
file
```
Example response:
...
...
@@ -401,7 +401,7 @@ Example response:
### Scope: merge_requests
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/groups/3/
-/
search?scope
=
merge_requests&search
=
file
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/groups/3/search?scope
=
merge_requests&search
=
file
```
Example response:
...
...
@@ -478,7 +478,7 @@ Example response:
### Scope: milestones
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/groups/3/
-/
search?scope
=
milestones&search
=
release
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/groups/3/search?scope
=
milestones&search
=
release
```
Example response:
...
...
@@ -507,7 +507,7 @@ Search within the specified project.
If a user is not a member of a project and the project is private, a
`GET`
request on that project will result to a
`404`
status code.
```
GET /projects/:id/
-/
search
GET /projects/:id/search
```
| Attribute | Type | Required | Description |
...
...
@@ -524,7 +524,7 @@ The response depends on the requested scope.
### Scope: issues
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/12/
-/
search?scope
=
issues&search
=
file
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/12/search?scope
=
issues&search
=
file
```
Example response:
...
...
@@ -589,7 +589,7 @@ Example response:
### Scope: merge_requests
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/
-/
search?scope
=
merge_requests&search
=
file
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/search?scope
=
merge_requests&search
=
file
```
Example response:
...
...
@@ -666,7 +666,7 @@ Example response:
### Scope: milestones
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/12/
-/
search?scope
=
milestones&search
=
release
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/12/search?scope
=
milestones&search
=
release
```
Example response:
...
...
@@ -691,7 +691,7 @@ Example response:
### Scope: notes
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/
-/
search?scope
=
notes&search
=
maxime
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/search?scope
=
notes&search
=
maxime
```
Example response:
...
...
@@ -723,7 +723,7 @@ Example response:
### Scope: wiki_blobs
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/
-/
search?scope
=
wiki_blobs&search
=
bye
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/search?scope
=
wiki_blobs&search
=
bye
```
Example response:
...
...
@@ -746,7 +746,7 @@ Example response:
### Scope: commits
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/
-/
search?scope
=
commits&search
=
bye
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/search?scope
=
commits&search
=
bye
```
Example response:
...
...
@@ -777,7 +777,7 @@ Example response:
### Scope: blobs
```
bash
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/
-/
search?scope
=
blobs&search
=
installation
curl
--request
GET
--header
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v4/projects/6/search?scope
=
blobs&search
=
installation
```
Example response:
...
...
lib/api/search.rb
View file @
4b6b68d0
...
...
@@ -84,7 +84,7 @@ module API
values:
%w(projects issues merge_requests milestones)
use
:pagination
end
get
':id/
-/
search'
do
get
':id/
(-/)
search'
do
present
search
(
group_id:
user_group
.
id
),
with:
entity
end
end
...
...
@@ -103,7 +103,7 @@ module API
values:
%w(issues merge_requests milestones notes wiki_blobs commits blobs)
use
:pagination
end
get
':id/
-/
search'
do
get
':id/
(-/)
search'
do
present
search
(
project_id:
user_project
.
id
),
with:
entity
end
end
...
...
spec/requests/api/search_spec.rb
View file @
4b6b68d0
...
...
@@ -99,10 +99,10 @@ describe API::Search do
end
end
describe
"GET /groups/:id/
-/
search"
do
describe
"GET /groups/:id/search"
do
context
'when user is not authenticated'
do
it
'returns 401 error'
do
get
api
(
"/groups/
#{
group
.
id
}
/
-/
search"
),
scope:
'projects'
,
search:
'awesome'
get
api
(
"/groups/
#{
group
.
id
}
/search"
),
scope:
'projects'
,
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
401
)
end
...
...
@@ -110,7 +110,7 @@ describe API::Search do
context
'when scope is not supported'
do
it
'returns 400 error'
do
get
api
(
"/groups/
#{
group
.
id
}
/
-/
search"
,
user
),
scope:
'unsupported'
,
search:
'awesome'
get
api
(
"/groups/
#{
group
.
id
}
/search"
,
user
),
scope:
'unsupported'
,
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
400
)
end
...
...
@@ -118,7 +118,7 @@ describe API::Search do
context
'when scope is missing'
do
it
'returns 400 error'
do
get
api
(
"/groups/
#{
group
.
id
}
/
-/
search"
,
user
),
search:
'awesome'
get
api
(
"/groups/
#{
group
.
id
}
/search"
,
user
),
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
400
)
end
...
...
@@ -126,7 +126,7 @@ describe API::Search do
context
'when group does not exist'
do
it
'returns 404 error'
do
get
api
(
'/groups/9999/
-/
search'
,
user
),
scope:
'issues'
,
search:
'awesome'
get
api
(
'/groups/9999/search'
,
user
),
scope:
'issues'
,
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
404
)
end
...
...
@@ -136,7 +136,7 @@ describe API::Search do
it
'returns 404 error'
do
private_group
=
create
(
:group
,
:private
)
get
api
(
"/groups/
#{
private_group
.
id
}
/
-/
search"
,
user
),
scope:
'issues'
,
search:
'awesome'
get
api
(
"/groups/
#{
private_group
.
id
}
/search"
,
user
),
scope:
'issues'
,
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
404
)
end
...
...
@@ -145,7 +145,7 @@ describe API::Search do
context
'with correct params'
do
context
'for projects scope'
do
before
do
get
api
(
"/groups/
#{
group
.
id
}
/
-/
search"
,
user
),
scope:
'projects'
,
search:
'awesome'
get
api
(
"/groups/
#{
group
.
id
}
/search"
,
user
),
scope:
'projects'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/projects'
...
...
@@ -155,7 +155,7 @@ describe API::Search do
before
do
create
(
:issue
,
project:
project
,
title:
'awesome issue'
)
get
api
(
"/groups/
#{
group
.
id
}
/
-/
search"
,
user
),
scope:
'issues'
,
search:
'awesome'
get
api
(
"/groups/
#{
group
.
id
}
/search"
,
user
),
scope:
'issues'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/issues'
...
...
@@ -165,7 +165,7 @@ describe API::Search do
before
do
create
(
:merge_request
,
source_project:
repo_project
,
title:
'awesome mr'
)
get
api
(
"/groups/
#{
group
.
id
}
/
-/
search"
,
user
),
scope:
'merge_requests'
,
search:
'awesome'
get
api
(
"/groups/
#{
group
.
id
}
/search"
,
user
),
scope:
'merge_requests'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/merge_requests'
...
...
@@ -175,7 +175,7 @@ describe API::Search do
before
do
create
(
:milestone
,
project:
project
,
title:
'awesome milestone'
)
get
api
(
"/groups/
#{
group
.
id
}
/
-/
search"
,
user
),
scope:
'milestones'
,
search:
'awesome'
get
api
(
"/groups/
#{
group
.
id
}
/search"
,
user
),
scope:
'milestones'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/milestones'
...
...
@@ -187,7 +187,7 @@ describe API::Search do
create
(
:milestone
,
project:
project
,
title:
'awesome milestone'
)
create
(
:milestone
,
project:
another_project
,
title:
'awesome milestone other project'
)
get
api
(
"/groups/
#{
CGI
.
escape
(
group
.
full_path
)
}
/
-/
search"
,
user
),
scope:
'milestones'
,
search:
'awesome'
get
api
(
"/groups/
#{
CGI
.
escape
(
group
.
full_path
)
}
/search"
,
user
),
scope:
'milestones'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/milestones'
...
...
@@ -198,7 +198,7 @@ describe API::Search do
describe
"GET /projects/:id/search"
do
context
'when user is not authenticated'
do
it
'returns 401 error'
do
get
api
(
"/projects/
#{
project
.
id
}
/
-/
search"
),
scope:
'issues'
,
search:
'awesome'
get
api
(
"/projects/
#{
project
.
id
}
/search"
),
scope:
'issues'
,
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
401
)
end
...
...
@@ -206,7 +206,7 @@ describe API::Search do
context
'when scope is not supported'
do
it
'returns 400 error'
do
get
api
(
"/projects/
#{
project
.
id
}
/
-/
search"
,
user
),
scope:
'unsupported'
,
search:
'awesome'
get
api
(
"/projects/
#{
project
.
id
}
/search"
,
user
),
scope:
'unsupported'
,
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
400
)
end
...
...
@@ -214,7 +214,7 @@ describe API::Search do
context
'when scope is missing'
do
it
'returns 400 error'
do
get
api
(
"/projects/
#{
project
.
id
}
/
-/
search"
,
user
),
search:
'awesome'
get
api
(
"/projects/
#{
project
.
id
}
/search"
,
user
),
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
400
)
end
...
...
@@ -222,7 +222,7 @@ describe API::Search do
context
'when project does not exist'
do
it
'returns 404 error'
do
get
api
(
'/projects/9999/
-/
search'
,
user
),
scope:
'issues'
,
search:
'awesome'
get
api
(
'/projects/9999/search'
,
user
),
scope:
'issues'
,
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
404
)
end
...
...
@@ -232,7 +232,7 @@ describe API::Search do
it
'returns 404 error'
do
project
.
update!
(
visibility_level:
Gitlab
::
VisibilityLevel
::
PRIVATE
)
get
api
(
"/projects/
#{
project
.
id
}
/
-/
search"
,
user
),
scope:
'issues'
,
search:
'awesome'
get
api
(
"/projects/
#{
project
.
id
}
/search"
,
user
),
scope:
'issues'
,
search:
'awesome'
expect
(
response
).
to
have_gitlab_http_status
(
404
)
end
...
...
@@ -243,7 +243,7 @@ describe API::Search do
before
do
create
(
:issue
,
project:
project
,
title:
'awesome issue'
)
get
api
(
"/projects/
#{
project
.
id
}
/
-/
search"
,
user
),
scope:
'issues'
,
search:
'awesome'
get
api
(
"/projects/
#{
project
.
id
}
/search"
,
user
),
scope:
'issues'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/issues'
...
...
@@ -253,7 +253,7 @@ describe API::Search do
before
do
create
(
:merge_request
,
source_project:
repo_project
,
title:
'awesome mr'
)
get
api
(
"/projects/
#{
repo_project
.
id
}
/
-/
search"
,
user
),
scope:
'merge_requests'
,
search:
'awesome'
get
api
(
"/projects/
#{
repo_project
.
id
}
/search"
,
user
),
scope:
'merge_requests'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/merge_requests'
...
...
@@ -263,7 +263,7 @@ describe API::Search do
before
do
create
(
:milestone
,
project:
project
,
title:
'awesome milestone'
)
get
api
(
"/projects/
#{
project
.
id
}
/
-/
search"
,
user
),
scope:
'milestones'
,
search:
'awesome'
get
api
(
"/projects/
#{
project
.
id
}
/search"
,
user
),
scope:
'milestones'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/milestones'
...
...
@@ -273,7 +273,7 @@ describe API::Search do
before
do
create
(
:note_on_merge_request
,
project:
project
,
note:
'awesome note'
)
get
api
(
"/projects/
#{
project
.
id
}
/
-/
search"
,
user
),
scope:
'notes'
,
search:
'awesome'
get
api
(
"/projects/
#{
project
.
id
}
/search"
,
user
),
scope:
'notes'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/notes'
...
...
@@ -284,7 +284,7 @@ describe API::Search do
wiki
=
create
(
:project_wiki
,
project:
project
)
create
(
:wiki_page
,
wiki:
wiki
,
attrs:
{
title:
'home'
,
content:
"Awesome page"
})
get
api
(
"/projects/
#{
project
.
id
}
/
-/
search"
,
user
),
scope:
'wiki_blobs'
,
search:
'awesome'
get
api
(
"/projects/
#{
project
.
id
}
/search"
,
user
),
scope:
'wiki_blobs'
,
search:
'awesome'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/blobs'
...
...
@@ -292,7 +292,7 @@ describe API::Search do
context
'for commits scope'
do
before
do
get
api
(
"/projects/
#{
repo_project
.
id
}
/
-/
search"
,
user
),
scope:
'commits'
,
search:
'498214de67004b1da3d820901307bed2a68a8ef6'
get
api
(
"/projects/
#{
repo_project
.
id
}
/search"
,
user
),
scope:
'commits'
,
search:
'498214de67004b1da3d820901307bed2a68a8ef6'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/commits_details'
...
...
@@ -300,7 +300,7 @@ describe API::Search do
context
'for commits scope with project path as id'
do
before
do
get
api
(
"/projects/
#{
CGI
.
escape
(
repo_project
.
full_path
)
}
/
-/
search"
,
user
),
scope:
'commits'
,
search:
'498214de67004b1da3d820901307bed2a68a8ef6'
get
api
(
"/projects/
#{
CGI
.
escape
(
repo_project
.
full_path
)
}
/search"
,
user
),
scope:
'commits'
,
search:
'498214de67004b1da3d820901307bed2a68a8ef6'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/commits_details'
...
...
@@ -308,7 +308,7 @@ describe API::Search do
context
'for blobs scope'
do
before
do
get
api
(
"/projects/
#{
repo_project
.
id
}
/
-/
search"
,
user
),
scope:
'blobs'
,
search:
'monitors'
get
api
(
"/projects/
#{
repo_project
.
id
}
/search"
,
user
),
scope:
'blobs'
,
search:
'monitors'
end
it_behaves_like
'response is correct'
,
schema:
'public_api/v4/blobs'
,
size:
2
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment