Make sure that errors in the incoming webhook url are caught.

This commit is contained in:
James Cole 2024-02-14 19:32:15 +01:00
parent a2c0d9f7d0
commit 1b1712d998
No known key found for this signature in database
GPG Key ID: B49A324B7EAD6D80
2 changed files with 14 additions and 6 deletions

View File

@ -27,7 +27,9 @@ namespace FireflyIII\Handlers\Events\Model;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray;
use FireflyIII\Events\Model\Rule\RuleActionFailedOnObject;
use FireflyIII\Notifications\User\RuleActionFailed;
use GuzzleHttp\Exception\ClientException;
use Illuminate\Support\Facades\Notification;
use Log;
/**
* Class RuleHandler
@ -55,8 +57,11 @@ class RuleHandler
$ruleTitle = $rule->title;
$ruleLink = route('rules.edit', [$rule->id]);
$params = [$mainMessage, $groupTitle, $groupLink, $ruleTitle, $ruleLink];
Notification::send($user, new RuleActionFailed($params));
try {
Notification::send($user, new RuleActionFailed($params));
} catch(ClientException $e) {
Log::error(sprintf('[a] Error sending notification that the rule action failed: %s', $e->getMessage()));
}
}
public function ruleActionFailedOnObject(RuleActionFailedOnObject $event): void
@ -80,7 +85,10 @@ class RuleHandler
$ruleTitle = $rule->title;
$ruleLink = route('rules.edit', [$rule->id]);
$params = [$mainMessage, $groupTitle, $groupLink, $ruleTitle, $ruleLink];
Notification::send($user, new RuleActionFailed($params));
try {
Notification::send($user, new RuleActionFailed($params));
} catch(ClientException $e) {
Log::error(sprintf('[b] Error sending notification that the rule action failed: %s', $e->getMessage()));
}
}
}

View File

@ -112,11 +112,11 @@ class RuleActionFailed extends Notification
$slackUrl = '';
}
if (UrlValidator::isValidWebhookURL((string)$slackUrl)) {
app('log')->debug('Will send ruleActionFailed through Slack!');
app('log')->debug('Will send ruleActionFailed through Slack or Discord!');
return ['slack'];
}
app('log')->debug('Will NOT send ruleActionFailed through Slack');
app('log')->debug('Will NOT send ruleActionFailed through Slack or Discord');
return [];
}