Handle web hook exception
Write to log if web hook cant be executed. This prevents 500 error when test web hook with invalid URL and prevent exceptions and retries in sidekiq Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
490ae737c7
commit
db2edff937
3 changed files with 8 additions and 4 deletions
|
@ -26,6 +26,7 @@ class Projects::HooksController < Projects::ApplicationController
|
|||
def test
|
||||
if !@project.empty_repo?
|
||||
status = TestHookService.new.execute(hook, current_user)
|
||||
|
||||
if status
|
||||
flash[:notice] = 'Hook successfully executed.'
|
||||
else
|
||||
|
|
|
@ -32,7 +32,10 @@ class WebHook < ActiveRecord::Base
|
|||
def execute(data)
|
||||
parsed_url = URI.parse(url)
|
||||
if parsed_url.userinfo.blank?
|
||||
WebHook.post(url, body: data.to_json, headers: { "Content-Type" => "application/json" }, verify: false)
|
||||
WebHook.post(url,
|
||||
body: data.to_json,
|
||||
headers: { "Content-Type" => "application/json" },
|
||||
verify: false)
|
||||
else
|
||||
post_url = url.gsub("#{parsed_url.userinfo}@", "")
|
||||
auth = {
|
||||
|
@ -45,6 +48,9 @@ class WebHook < ActiveRecord::Base
|
|||
verify: false,
|
||||
basic_auth: auth)
|
||||
end
|
||||
rescue SocketError, Errno::ECONNREFUSED => e
|
||||
logger.error("WebHook Error => #{e}")
|
||||
false
|
||||
end
|
||||
|
||||
def async_execute(data)
|
||||
|
|
|
@ -2,8 +2,5 @@ class TestHookService
|
|||
def execute(hook, current_user)
|
||||
data = GitPushService.new.sample_data(hook.project, current_user)
|
||||
hook.execute(data)
|
||||
true
|
||||
rescue SocketError
|
||||
false
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue