From 316b88cea6c08e89cc6471703a241212c8b94700 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Tue, 21 Nov 2023 08:34:37 +0100 Subject: [PATCH] Add 10 second timeout to matomo requests --- .../Core/src/Matomo/MatomoTrackerBuilder.php | 18 ++++++++++++------ .../test/Matomo/MatomoTrackerBuilderTest.php | 2 ++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/module/Core/src/Matomo/MatomoTrackerBuilder.php b/module/Core/src/Matomo/MatomoTrackerBuilder.php index 655bbd0b..393e0472 100644 --- a/module/Core/src/Matomo/MatomoTrackerBuilder.php +++ b/module/Core/src/Matomo/MatomoTrackerBuilder.php @@ -9,6 +9,8 @@ use Shlinkio\Shlink\Core\Exception\RuntimeException; class MatomoTrackerBuilder implements MatomoTrackerBuilderInterface { + public const MATOMO_DEFAULT_TIMEOUT = 10; // Time in seconds + public function __construct(private readonly MatomoOptions $options) { } @@ -27,12 +29,16 @@ class MatomoTrackerBuilder implements MatomoTrackerBuilderInterface // Create a new MatomoTracker on every request, because it infers request info during construction $tracker = new MatomoTracker($siteId, $this->options->baseUrl); - // Token required to set the IP and location - $tracker->setTokenAuth($this->options->apiToken); - // We don't want to bulk send, as every request to Shlink will create a new tracker - $tracker->disableBulkTracking(); - // Ensure params are not sent in the URL, for security reasons - $tracker->setRequestMethodNonBulk('POST'); + $tracker + // Token required to set the IP and location + ->setTokenAuth($this->options->apiToken) + // Ensure params are not sent in the URL, for security reasons + ->setRequestMethodNonBulk('POST') + // Set a reasonable timeout + ->setRequestTimeout(self::MATOMO_DEFAULT_TIMEOUT) + ->setRequestConnectTimeout(self::MATOMO_DEFAULT_TIMEOUT) + // We don't want to bulk send, as every request to Shlink will create a new tracker + ->disableBulkTracking(); return $tracker; } diff --git a/module/Core/test/Matomo/MatomoTrackerBuilderTest.php b/module/Core/test/Matomo/MatomoTrackerBuilderTest.php index 5a38412a..5a4e6ab0 100644 --- a/module/Core/test/Matomo/MatomoTrackerBuilderTest.php +++ b/module/Core/test/Matomo/MatomoTrackerBuilderTest.php @@ -39,6 +39,8 @@ class MatomoTrackerBuilderTest extends TestCase self::assertEquals('api_token', $tracker->token_auth); // @phpstan-ignore-line self::assertEquals(5, $tracker->idSite); // @phpstan-ignore-line + self::assertEquals(MatomoTrackerBuilder::MATOMO_DEFAULT_TIMEOUT, $tracker->getRequestTimeout()); + self::assertEquals(MatomoTrackerBuilder::MATOMO_DEFAULT_TIMEOUT, $tracker->getRequestConnectTimeout()); } private function builder(?MatomoOptions $options = null): MatomoTrackerBuilder