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
fa300909
Commit
fa300909
authored
Apr 12, 2016
by
Robert Schilling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make subscription API more RESTful
parent
f875189b
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
68 additions
and
72 deletions
+68
-72
issues.md
doc/api/issues.md
+14
-13
merge_requests.md
doc/api/merge_requests.md
+14
-14
helpers.rb
lib/api/helpers.rb
+1
-1
issues.rb
lib/api/issues.rb
+6
-23
merge_requests.rb
lib/api/merge_requests.rb
+7
-7
issues_spec.rb
spec/requests/api/issues_spec.rb
+19
-7
merge_requests_spec.rb
spec/requests/api/merge_requests_spec.rb
+7
-7
No files found.
doc/api/issues.md
View file @
fa300909
...
...
@@ -408,13 +408,14 @@ Example response:
## Subscribe to an issue
Subscribes to an issue to receive notifications. If the operation is successful,
status code
`201`
together with the updated issue is returned. If the user is
already subscribed to the issue, the status code
`304`
is returned. If the
project or issue is not found, status code
`404`
is returned.
Subscribes the authenticated user to an issue to receive notifications. If the
operation is successful, status code
`201`
together with the updated issue is
returned. If the user is already subscribed to the issue, the status code
`304`
is returned. If the project or issue is not found, status code
`404`
is
returned.
```
POST /projects/:id/issues/:issue_id/subscri
be
POST /projects/:id/issues/:issue_id/subscri
ption
```
| Attribute | Type | Required | Description |
...
...
@@ -423,7 +424,7 @@ POST /projects/:id/issues/:issue_id/subscribe
|
`issue_id`
| integer | yes | The ID of a project's issue |
```
bash
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/issues/93/subscri
be
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/issues/93/subscri
ption
```
Example response:
...
...
@@ -461,14 +462,14 @@ Example response:
## Unsubscribe from an issue
Unsubscribes
from an issue to not receive notifications from that issue. If the
operation is successful, status code
`201`
together with the updated issue is
returned. If the user is not subscribed to the issue, the status code
`304`
is returned. If the project or issue is not found, status code
`404`
is
returned.
Unsubscribes
the authenticated user from the issue to not receive notifications
from it. If the operation is successful, status code
`200`
together with the
updated issue is returned. If the user is not subscribed to the issue, the
status code
`304`
is returned. If the project or issue is not found, status code
`404`
is
returned.
```
POST /projects/:id/issues/:issue_id/unsubscribe
DELETE /projects/:id/issues/:issue_id/subscription
```
| Attribute | Type | Required | Description |
...
...
@@ -477,7 +478,7 @@ POST /projects/:id/issues/:issue_id/unsubscribe
|
`issue_id`
| integer | yes | The ID of a project's issue |
```
bash
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/issues/93/unsubscribe
curl
-X
DELETE
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/issues/93/subscription
```
Example response:
...
...
doc/api/merge_requests.md
View file @
fa300909
...
...
@@ -609,14 +609,14 @@ Example response:
## Subscribe to a merge request
Subscribes t
o a merge request to receive notification. If the operation is
successful, status code
`201`
together with the updated merge request is
re
turned. If the user is already subscribed to the merge request, the status
code
`304`
is returned. If the project or merge request is not found, status
code
`404`
is returned.
Subscribes t
he authenticated user to a merge request to receive notification. If
the operation is successful, status code
`201`
together with the updated merge
re
quest is returned. If the user is already subscribed to the merge request, the
status code
`304`
is returned. If the project or merge request is not found,
status
code
`404`
is returned.
```
POST /projects/:id/merge_requests/:merge_request_id/subscri
be
POST /projects/:id/merge_requests/:merge_request_id/subscri
ption
```
| Attribute | Type | Required | Description |
...
...
@@ -625,7 +625,7 @@ POST /projects/:id/merge_requests/:merge_request_id/subscribe
|
`merge_request_id`
| integer | yes | The ID of the merge request |
```
bash
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/merge_requests/17/subscri
be
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/merge_requests/17/subscri
ption
```
Example response:
...
...
@@ -682,14 +682,14 @@ Example response:
```
## Unsubscribe from a merge request
Unsubscribes
from a merge request to not receive notifications from that merg
e
request. If the operation is successful, status code
`201`
together with the
updated merge request is returned. If the user is not subscribed to the merge
request, the status code
`304`
is returned. If the project or merge request is
not found, status code
`404`
is returned.
Unsubscribes
the authenticated user from a merge request to not receiv
e
notifications from that merge request. If the operation is successful, status
code
`200`
together with the updated merge request is returned. If the user is
not subscribed to the merge request, the status code
`304`
is returned. If the
project or merge request is
not found, status code
`404`
is returned.
```
POST /projects/:id/merge_requests/:merge_request_id/unsubscribe
DELETE /projects/:id/merge_requests/:merge_request_id/subscription
```
| Attribute | Type | Required | Description |
...
...
@@ -698,7 +698,7 @@ POST /projects/:id/merge_requests/:merge_request_id/unsubscribe
|
`merge_request_id`
| integer | yes | The ID of the merge request |
```
bash
curl
-X
POST
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/merge_requests/17/subscribe
curl
-X
DELETE
-H
"PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK"
https://gitlab.example.com/api/v3/projects/5/merge_requests/17/subscription
```
Example response:
...
...
lib/api/helpers.rb
View file @
fa300909
...
...
@@ -242,7 +242,7 @@ module API
end
def
not_modified!
render_api_error!
(
'304 Not
m
odified'
,
304
)
render_api_error!
(
'304 Not
M
odified'
,
304
)
end
def
render_validation_error!
(
model
)
...
...
lib/api/issues.rb
View file @
fa300909
...
...
@@ -238,32 +238,15 @@ module API
# id (required) - The ID of a project
# issue_id (required) - The ID of a project issue
# Example Request:
# POST /projects/:id/issues/:issue_id
post
":id/issues/:issue_id
subscribe
"
do
# POST /projects/:id/issues/:issue_id
/subscription
post
":id/issues/:issue_id
/subscription
"
do
issue
=
user_project
.
issues
.
find_by
(
id:
params
[
:issue_id
])
if
!
issue
.
subscribed?
(
current_user
)
present
issue
,
with:
Entities
::
Issue
,
current_user:
current_user
else
if
issue
.
subscribed?
(
current_user
)
not_modified!
end
end
# Subscribes to a project issue
#
# Parameters:
# id (required) - The ID of a project
# issue_id (required) - The ID of a project issue
# Example Request:
# POST /projects/:id/issues/:issue_id/subscribe
post
":id/issues/:issue_id/subscribe"
do
issue
=
user_project
.
issues
.
find_by
(
id:
params
[
:issue_id
])
if
!
issue
.
subscribed?
(
current_user
)
else
issue
.
toggle_subscription
(
current_user
)
present
issue
,
with:
Entities
::
Issue
,
current_user:
current_user
else
not_modified!
end
end
...
...
@@ -273,8 +256,8 @@ module API
# id (required) - The ID of a project
# issue_id (required) - The ID of a project issue
# Example Request:
#
POST /projects/:id/issues/:issue_id/unsubscribe
post
":id/issues/:issue_id/unsubscribe
"
do
#
DELETE /projects/:id/issues/:issue_id/subscription
delete
":id/issues/:issue_id/subscription
"
do
issue
=
user_project
.
issues
.
find_by
(
id:
params
[
:issue_id
])
if
issue
.
subscribed?
(
current_user
)
...
...
lib/api/merge_requests.rb
View file @
fa300909
...
...
@@ -334,15 +334,15 @@ module API
# id (required) - The ID of a project
# merge_request_id (required) - The ID of a merge request
# Example Request:
# POST /projects/:id/issues/:merge_request_id/subscri
be
post
"
#{
path
}
/subscri
be
"
do
# POST /projects/:id/issues/:merge_request_id/subscri
ption
post
"
#{
path
}
/subscri
ption
"
do
merge_request
=
user_project
.
merge_requests
.
find
(
params
[
:merge_request_id
])
if
!
merge_request
.
subscribed?
(
current_user
)
if
merge_request
.
subscribed?
(
current_user
)
not_modified!
else
merge_request
.
toggle_subscription
(
current_user
)
present
merge_request
,
with:
Entities
::
MergeRequest
,
current_user:
current_user
else
not_modified!
end
end
...
...
@@ -352,8 +352,8 @@ module API
# id (required) - The ID of a project
# merge_request_id (required) - The ID of a merge request
# Example Request:
#
POST /projects/:id/merge_requests/:merge_request_id/unsubscribe
post
"
#{
path
}
/unsubscribe
"
do
#
DELETE /projects/:id/merge_requests/:merge_request_id/subscription
delete
"
#{
path
}
/subscription
"
do
merge_request
=
user_project
.
merge_requests
.
find
(
params
[
:merge_request_id
])
if
merge_request
.
subscribed?
(
current_user
)
...
...
spec/requests/api/issues_spec.rb
View file @
fa300909
...
...
@@ -571,33 +571,45 @@ describe API::API, api: true do
end
end
describe
'POST :id/issues/:issue_id/subscri
be
'
do
describe
'POST :id/issues/:issue_id/subscri
ption
'
do
it
'subscribes to an issue'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/subscri
be
"
,
user2
)
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/subscri
ption
"
,
user2
)
expect
(
response
.
status
).
to
eq
(
201
)
expect
(
json_response
[
'subscribed'
]).
to
eq
(
true
)
end
it
'returns 304 if already subscribed'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/subscri
be
"
,
user
)
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/subscri
ption
"
,
user
)
expect
(
response
.
status
).
to
eq
(
304
)
end
it
'returns 404 if the issue is not found'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/123/subscription"
,
user
)
expect
(
response
.
status
).
to
eq
(
404
)
end
end
describe
'
POST :id/issues/:issue_id/unsubscribe
'
do
describe
'
DELETE :id/issues/:issue_id/subscription
'
do
it
'unsubscribes from an issue'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/
unsubscribe
"
,
user
)
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/
subscription
"
,
user
)
expect
(
response
.
status
).
to
eq
(
20
1
)
expect
(
response
.
status
).
to
eq
(
20
0
)
expect
(
json_response
[
'subscribed'
]).
to
eq
(
false
)
end
it
'returns 304 if not subscribed'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/
unsubscribe
"
,
user2
)
post
api
(
"/projects/
#{
project
.
id
}
/issues/
#{
issue
.
id
}
/
subscription
"
,
user2
)
expect
(
response
.
status
).
to
eq
(
304
)
end
it
'returns 404 if the issue is not found'
do
post
api
(
"/projects/
#{
project
.
id
}
/issues/123/subscription"
,
user
)
expect
(
response
.
status
).
to
eq
(
404
)
end
end
end
spec/requests/api/merge_requests_spec.rb
View file @
fa300909
...
...
@@ -516,31 +516,31 @@ describe API::API, api: true do
end
end
describe
'POST :id/merge_requests/:merge_request_id/subscri
be
'
do
describe
'POST :id/merge_requests/:merge_request_id/subscri
ption
'
do
it
'subscribes to a merge request'
do
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscri
be
"
,
admin
)
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscri
ption
"
,
admin
)
expect
(
response
.
status
).
to
eq
(
201
)
expect
(
json_response
[
'subscribed'
]).
to
eq
(
true
)
end
it
'returns 304 if already subscribed'
do
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscri
be
"
,
user
)
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscri
ption
"
,
user
)
expect
(
response
.
status
).
to
eq
(
304
)
end
end
describe
'
POST :id/merge_requests/:merge_request_id/unsubscribe
'
do
describe
'
DELETE :id/merge_requests/:merge_request_id/subscription
'
do
it
'unsubscribes from a merge request'
do
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/unsubscribe
"
,
user
)
delete
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscription
"
,
user
)
expect
(
response
.
status
).
to
eq
(
20
1
)
expect
(
response
.
status
).
to
eq
(
20
0
)
expect
(
json_response
[
'subscribed'
]).
to
eq
(
false
)
end
it
'returns 304 if not subscribed'
do
post
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/unsubscribe
"
,
admin
)
delete
api
(
"/projects/
#{
project
.
id
}
/merge_requests/
#{
merge_request
.
id
}
/subscription
"
,
admin
)
expect
(
response
.
status
).
to
eq
(
304
)
end
...
...
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