diff --git a/src/Transport/HttpTransport.php b/src/Transport/HttpTransport.php index db9ef1046..f47867fe8 100644 --- a/src/Transport/HttpTransport.php +++ b/src/Transport/HttpTransport.php @@ -91,7 +91,7 @@ public function send(Event $event): Result $this->logger->info(\sprintf('Sending %s to %s.', $eventDescription, $targetDescription), ['event' => $event]); $eventType = $event->getType(); - if ($this->rateLimiter->isRateLimited($eventType)) { + if ($this->rateLimiter->isRateLimited((string) $eventType)) { $this->logger->warning( \sprintf('Rate limit exceeded for sending requests of type "%s".', (string) $eventType), ['event' => $event] diff --git a/src/Transport/RateLimiter.php b/src/Transport/RateLimiter.php index 9a3d6d0f5..ce0becfd1 100644 --- a/src/Transport/RateLimiter.php +++ b/src/Transport/RateLimiter.php @@ -93,22 +93,28 @@ public function handleResponse(Response $response): bool return false; } - public function isRateLimited(EventType $eventType): bool + /** + * @param string|EventType $eventType + */ + public function isRateLimited($eventType): bool { $disabledUntil = $this->getDisabledUntil($eventType); return $disabledUntil > time(); } - public function getDisabledUntil(EventType $eventType): int + /** + * @param string|EventType $eventType + */ + public function getDisabledUntil($eventType): int { - $category = (string) $eventType; + $eventType = $eventType instanceof EventType ? (string) $eventType : $eventType; - if ($eventType === EventType::event()) { - $category = self::DATA_CATEGORY_ERROR; + if ($eventType === 'event') { + $eventType = self::DATA_CATEGORY_ERROR; } - return max($this->rateLimits['all'] ?? 0, $this->rateLimits[$category] ?? 0); + return max($this->rateLimits['all'] ?? 0, $this->rateLimits[$eventType] ?? 0); } private function parseRetryAfterHeader(int $currentTime, string $header): int diff --git a/tests/Transport/RateLimiterTest.php b/tests/Transport/RateLimiterTest.php index 19f9a9f89..441aa2eff 100644 --- a/tests/Transport/RateLimiterTest.php +++ b/tests/Transport/RateLimiterTest.php @@ -116,13 +116,13 @@ public function testIsRateLimited(): void private function assertEventTypesAreRateLimited(array $eventTypesLimited): void { foreach ($eventTypesLimited as $eventType) { - $this->assertTrue($this->rateLimiter->isRateLimited($eventType)); + $this->assertTrue($this->rateLimiter->isRateLimited((string) $eventType)); } $eventTypesNotLimited = array_diff(EventType::cases(), $eventTypesLimited); foreach ($eventTypesNotLimited as $eventType) { - $this->assertFalse($this->rateLimiter->isRateLimited($eventType)); + $this->assertFalse($this->rateLimiter->isRateLimited((string) $eventType)); } } }