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
...
@@ -4,73 +4,77 @@ module API
before
{
authenticate!
}
before
{
authenticate!
}
before
{
authorize_admin_project
}
before
{
authorize_admin_project
}
params
do
requires
:id
,
type:
String
,
desc:
'The ID of a project'
end
resource
:projects
do
resource
:projects
do
# Get project hooks
desc
'Get project hooks'
do
#
success
Entities
::
ProjectHook
# Parameters:
end
# id (required) - The ID of a project
# Example Request:
# GET /projects/:id/hooks
get
":id/hooks"
do
get
":id/hooks"
do
@hooks
=
paginate
user_project
.
hooks
hooks
=
paginate
user_project
.
hooks
present
@hooks
,
with:
Entities
::
ProjectHook
present
hooks
,
with:
Entities
::
ProjectHook
end
end
# Get a project hook
desc
'Get a project hook'
do
#
success
Entities
::
ProjectHook
# Parameters:
end
# id (required) - The ID of a project
params
do
# hook_id (required) - The ID of a project hook
requires
:hook_id
,
type:
Integer
,
desc:
'The ID of a project hook'
# Example Request:
end
# GET /projects/:id/hooks/:hook_id
get
":id/hooks/:hook_id"
do
get
":id/hooks/:hook_id"
do
@
hook
=
user_project
.
hooks
.
find
(
params
[
:hook_id
])
hook
=
user_project
.
hooks
.
find
(
params
[
:hook_id
])
present
@
hook
,
with:
Entities
::
ProjectHook
present
hook
,
with:
Entities
::
ProjectHook
end
end
# Add hook to project
desc
'Add hook to project'
do
#
success
Entities
::
ProjectHook
# Parameters:
end
# id (required) - The ID of a project
params
do
# url (required) - The hook URL
requires
:url
,
type:
String
,
desc:
"The URL to send the request to"
# Example Request:
optional
:push_events
,
type:
Boolean
,
desc:
"Trigger hook on push events"
# POST /projects/:id/hooks
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
post
":id/hooks"
do
required_attributes!
[
:url
]
new_hook_params
=
declared
(
params
,
include_missing:
false
,
include_parent_namespaces:
false
).
to_h
attrs
=
attributes_for_keys
[
hook
=
user_project
.
hooks
.
new
(
new_hook_params
)
: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
)
if
@
hook
.
save
if
hook
.
save
present
@
hook
,
with:
Entities
::
ProjectHook
present
hook
,
with:
Entities
::
ProjectHook
else
else
if
@hook
.
errors
[
:url
].
present?
error!
(
"Invalid url given"
,
422
)
if
hook
.
errors
[
:url
].
present?
error!
(
"Invalid url given"
,
422
)
end
not_found!
(
"Project hook
#{
hook
.
errors
.
messages
}
"
)
not_found!
(
"Project hook
#{
@hook
.
errors
.
messages
}
"
)
end
end
end
end
# Update an existing project hook
desc
'Update an existing project hook'
do
#
success
Entities
::
ProjectHook
# Parameters:
end
# id (required) - The ID of a project
params
do
# hook_id (required) - The ID of a project hook
requires
:hook_id
,
type:
Integer
,
desc:
"The ID of the hook to update"
# url (required) - The hook URL
requires
:url
,
type:
String
,
desc:
"The URL to send the request to"
# Example Request:
optional
:push_events
,
type:
Boolean
,
desc:
"Trigger hook on push events"
# PUT /projects/:id/hooks/:hook_id
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
put
":id/hooks/:hook_id"
do
<<<<<<<
HEAD
@hook
=
user_project
.
hooks
.
find
(
params
[
:hook_id
])
@hook
=
user_project
.
hooks
.
find
(
params
[
:hook_id
])
required_attributes!
[
:url
]
required_attributes!
[
:url
]
attrs
=
attributes_for_keys
[
attrs
=
attributes_for_keys
[
...
@@ -86,29 +90,30 @@ module API
...
@@ -86,29 +90,30 @@ module API
:enable_ssl_verification
,
:enable_ssl_verification
,
:token
: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
if
hook
.
update_attributes
(
new_params
)
present
@
hook
,
with:
Entities
::
ProjectHook
present
hook
,
with:
Entities
::
ProjectHook
else
else
if
@hook
.
errors
[
:url
].
present?
error!
(
"Invalid url given"
,
422
)
if
hook
.
errors
[
:url
].
present?
error!
(
"Invalid url given"
,
422
)
end
not_found!
(
"Project hook
#{
hook
.
errors
.
messages
}
"
)
not_found!
(
"Project hook
#{
@hook
.
errors
.
messages
}
"
)
end
end
end
end
# Deletes project hook. This is an idempotent function.
desc
'Deletes project hook'
do
#
success
Entities
::
ProjectHook
# Parameters:
end
# id (required) - The ID of a project
params
do
# hook_id (required) - The ID of hook to delete
requires
:hook_id
,
type:
Integer
,
desc:
'The ID of the hook to delete'
# Example Request:
end
# DELETE /projects/:id/hooks/:hook_id
delete
":id/hooks/:hook_id"
do
delete
":id/hooks/:hook_id"
do
required_attributes!
[
:hook_id
]
begin
begin
@hook
=
user_project
.
hooks
.
destroy
(
params
[
:hook_id
])
present
user_project
.
hooks
.
destroy
(
params
[
:hook_id
]),
with:
Entities
::
ProjectHook
rescue
rescue
# ProjectHook can raise Error if hook_id not found
# ProjectHook can raise Error if hook_id not found
not_found!
(
"Error deleting hook
#{
params
[
:hook_id
]
}
"
)
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