Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
gitlab-ce
Commits
7f320142
Commit
7f320142
authored
Oct 18, 2016
by
Z.J. van de Weg
Committed by
Z.J. van de Weg
Nov 04, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
GrapeDSL for project hooks
parent
957744da
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
74 additions
and
69 deletions
+74
-69
lib/api/project_hooks.rb
lib/api/project_hooks.rb
+74
-69
No files found.
lib/api/project_hooks.rb
View file @
7f320142
...
...
@@ -4,73 +4,77 @@ module API
before
{
authenticate!
}
before
{
authorize_admin_project
}
params
do
requires
:id
,
type:
String
,
desc:
'The ID of a project'
end
resource
:projects
do
# Get project hooks
#
# Parameters:
# id (required) - The ID of a project
# Example Request:
# GET /projects/:id/hooks
desc
'Get project hooks'
do
success
Entities
::
ProjectHook
end
get
":id/hooks"
do
@hooks
=
paginate
user_project
.
hooks
present
@hooks
,
with:
Entities
::
ProjectHook
hooks
=
paginate
user_project
.
hooks
present
hooks
,
with:
Entities
::
ProjectHook
end
# Get a project hook
#
# Parameters:
# id (required) - The ID of a project
# hook_id (required) - The ID of a project hook
# Example Request:
# GET /projects/:id/hooks/:hook_id
desc
'Get a project hook'
do
success
Entities
::
ProjectHook
end
params
do
requires
:hook_id
,
type:
Integer
,
desc:
'The ID of a project hook'
end
get
":id/hooks/:hook_id"
do
@
hook
=
user_project
.
hooks
.
find
(
params
[
:hook_id
])
present
@
hook
,
with:
Entities
::
ProjectHook
hook
=
user_project
.
hooks
.
find
(
params
[
:hook_id
])
present
hook
,
with:
Entities
::
ProjectHook
end
# Add hook to project
#
# Parameters:
# id (required) - The ID of a project
# url (required) - The hook URL
# Example Request:
# POST /projects/:id/hooks
desc
'Add hook to project'
do
success
Entities
::
ProjectHook
end
params
do
requires
:url
,
type:
String
,
desc:
"The URL to send the request to"
optional
:push_events
,
type:
Boolean
,
desc:
"Trigger hook on push events"
optional
:issues_events
,
type:
Boolean
,
desc:
"Trigger hook on issues events"
optional
:merge_requests_events
,
type:
Boolean
,
desc:
"Trigger hook on merge request events"
optional
:tag_push_events
,
type:
Boolean
,
desc:
"Trigger hook on tag push events"
optional
:note_events
,
type:
Boolean
,
desc:
"Trigger hook on note(comment) events"
optional
:build_events
,
type:
Boolean
,
desc:
"Trigger hook on build events"
optional
:pipeline_events
,
type:
Boolean
,
desc:
"Trigger hook on pipeline events"
optional
:wiki_events
,
type:
Boolean
,
desc:
"Trigger hook on wiki events"
optional
:enable_ssl_verification
,
type:
Boolean
,
desc:
"Do SSL verification when triggering the hook"
optional
:token
,
type:
String
,
desc:
"Secret token to validate received payloads; this will not be returned in the response"
end
post
":id/hooks"
do
required_attributes!
[
:url
]
attrs
=
attributes_for_keys
[
:url
,
:push_events
,
:issues_events
,
:merge_requests_events
,
:tag_push_events
,
:note_events
,
:build_events
,
:pipeline_events
,
:wiki_page_events
,
:enable_ssl_verification
,
:token
]
@hook
=
user_project
.
hooks
.
new
(
attrs
)
new_hook_params
=
declared
(
params
,
include_missing:
false
,
include_parent_namespaces:
false
).
to_h
hook
=
user_project
.
hooks
.
new
(
new_hook_params
)
if
@
hook
.
save
present
@
hook
,
with:
Entities
::
ProjectHook
if
hook
.
save
present
hook
,
with:
Entities
::
ProjectHook
else
if
@hook
.
errors
[
:url
].
present?
error!
(
"Invalid url given"
,
422
)
end
not_found!
(
"Project hook
#{
@hook
.
errors
.
messages
}
"
)
error!
(
"Invalid url given"
,
422
)
if
hook
.
errors
[
:url
].
present?
not_found!
(
"Project hook
#{
hook
.
errors
.
messages
}
"
)
end
end
# Update an existing project hook
#
# Parameters:
# id (required) - The ID of a project
# hook_id (required) - The ID of a project hook
# url (required) - The hook URL
# Example Request:
# PUT /projects/:id/hooks/:hook_id
desc
'Update an existing project hook'
do
success
Entities
::
ProjectHook
end
params
do
requires
:hook_id
,
type:
Integer
,
desc:
"The ID of the hook to update"
requires
:url
,
type:
String
,
desc:
"The URL to send the request to"
optional
:push_events
,
type:
Boolean
,
desc:
"Trigger hook on push events"
optional
:issues_events
,
type:
Boolean
,
desc:
"Trigger hook on issues events"
optional
:merge_requests_events
,
type:
Boolean
,
desc:
"Trigger hook on merge request events"
optional
:tag_push_events
,
type:
Boolean
,
desc:
"Trigger hook on tag push events"
optional
:note_events
,
type:
Boolean
,
desc:
"Trigger hook on note(comment) events"
optional
:build_events
,
type:
Boolean
,
desc:
"Trigger hook on build events"
optional
:pipeline_events
,
type:
Boolean
,
desc:
"Trigger hook on pipeline events"
optional
:wiki_events
,
type:
Boolean
,
desc:
"Trigger hook on wiki events"
optional
:enable_ssl_verification
,
type:
Boolean
,
desc:
"Do SSL verification when triggering the hook"
end
put
":id/hooks/:hook_id"
do
<<<<<<<
HEAD
@hook
=
user_project
.
hooks
.
find
(
params
[
:hook_id
])
required_attributes!
[
:url
]
attrs
=
attributes_for_keys
[
...
...
@@ -86,29 +90,30 @@ module API
:enable_ssl_verification
,
:token
]
=======
hook
=
user_project
.
hooks
.
find
(
params
[
:hook_id
])
new_params
=
declared
(
params
,
include_missing:
false
,
include_parent_namespaces:
false
).
to_h
new_params
.
delete
(
'hook_id'
)
>>>>>>>
GrapeDSL
for
project
hooks
if
@hook
.
update_attributes
attrs
present
@
hook
,
with:
Entities
::
ProjectHook
if
hook
.
update_attributes
(
new_params
)
present
hook
,
with:
Entities
::
ProjectHook
else
if
@hook
.
errors
[
:url
].
present?
error!
(
"Invalid url given"
,
422
)
end
not_found!
(
"Project hook
#{
@hook
.
errors
.
messages
}
"
)
error!
(
"Invalid url given"
,
422
)
if
hook
.
errors
[
:url
].
present?
not_found!
(
"Project hook
#{
hook
.
errors
.
messages
}
"
)
end
end
# Deletes project hook. This is an idempotent function.
#
# Parameters:
# id (required) - The ID of a project
# hook_id (required) - The ID of hook to delete
# Example Request:
# DELETE /projects/:id/hooks/:hook_id
desc
'Deletes project hook'
do
success
Entities
::
ProjectHook
end
params
do
requires
:hook_id
,
type:
Integer
,
desc:
'The ID of the hook to delete'
end
delete
":id/hooks/:hook_id"
do
required_attributes!
[
:hook_id
]
begin
@hook
=
user_project
.
hooks
.
destroy
(
params
[
:hook_id
])
present
user_project
.
hooks
.
destroy
(
params
[
:hook_id
]),
with:
Entities
::
ProjectHook
rescue
# ProjectHook can raise Error if hook_id not found
not_found!
(
"Error deleting hook
#{
params
[
:hook_id
]
}
"
)
...
...
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