. */ namespace FireflyIII\Handlers\Events; use Exception; use FireflyIII\Helpers\Webhook\SignatureGeneratorInterface; use FireflyIII\Models\WebhookAttempt; use FireflyIII\Models\WebhookMessage; use FireflyIII\Services\Webhook\WebhookSenderInterface; use GuzzleHttp\Client; use GuzzleHttp\Exception\ClientException; use JsonException; use Log; /** * Class WebhookEventHandler */ class WebhookEventHandler { /** * Will try to send at most 3 messages so the flow doesn't get broken too much. */ public function sendWebhookMessages(): void { $messages = WebhookMessage ::where('webhook_messages.sent', 0) ->where('webhook_messages.errored', 0) ->get(['webhook_messages.*']) ->filter( function (WebhookMessage $message) { return $message->webhookAttempts()->count() <= 2; } )->splice(0, 3); Log::debug(sprintf('Found %d webhook message(s) ready to be send.', $messages->count())); $sender =app(WebhookSenderInterface::class); $sender->setMessages($messages); $sender->send(); } }