mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-24 11:52:34 +01:00
Added webhook call http exception handling
Will now catch and log errors on events such as http timeouts. For #3122
This commit is contained in:
parent
fe54c7f27a
commit
6e18620a0a
@ -73,10 +73,16 @@ class DispatchWebhookJob implements ShouldQueue
|
||||
$themeResponse = Theme::dispatch(ThemeEvents::WEBHOOK_CALL_BEFORE, $this->event, $this->webhook, $this->detail);
|
||||
$webhookData = $themeResponse ?? $this->buildWebhookData();
|
||||
|
||||
$response = Http::asJson()
|
||||
->withOptions(['allow_redirects' => ['strict' => true]])
|
||||
->timeout(3)
|
||||
->post($this->webhook->endpoint, $webhookData);
|
||||
try {
|
||||
$response = Http::asJson()
|
||||
->withOptions(['allow_redirects' => ['strict' => true]])
|
||||
->timeout(3)
|
||||
->post($this->webhook->endpoint, $webhookData);
|
||||
|
||||
} catch (\Exception $exception) {
|
||||
Log::error("Webhook call to endpoint {$this->webhook->endpoint} failed with error \"{$exception->getMessage()}\"");
|
||||
return;
|
||||
}
|
||||
|
||||
if ($response->failed()) {
|
||||
Log::error("Webhook call to endpoint {$this->webhook->endpoint} failed with status {$response->status()}");
|
||||
|
@ -60,6 +60,18 @@ class WebhookCallTest extends TestCase
|
||||
$this->assertTrue($logger->hasError('Webhook call to endpoint https://wh.example.com failed with status 500'));
|
||||
}
|
||||
|
||||
public function test_webhook_call_exception_is_caught_and_logged()
|
||||
{
|
||||
Http::shouldReceive('asJson')->andThrow(new \Exception('Failed to perform request'));
|
||||
|
||||
$logger = $this->withTestLogger();
|
||||
$this->newWebhook(['active' => true, 'endpoint' => 'https://wh.example.com'], ['all']);
|
||||
|
||||
$this->runEvent(ActivityType::ROLE_CREATE);
|
||||
|
||||
$this->assertTrue($logger->hasError('Webhook call to endpoint https://wh.example.com failed with error "Failed to perform request"'));
|
||||
}
|
||||
|
||||
public function test_webhook_call_data_format()
|
||||
{
|
||||
Http::fake([
|
||||
|
Loading…
Reference in New Issue
Block a user