Skip to content

Commit f9acbce

Browse files
authored
Allow passing arbitrary event types to the rate limiter (#1831)
1 parent c9596f0 commit f9acbce

3 files changed

Lines changed: 15 additions & 9 deletions

File tree

src/Transport/HttpTransport.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public function send(Event $event): Result
9191
$this->logger->info(\sprintf('Sending %s to %s.', $eventDescription, $targetDescription), ['event' => $event]);
9292

9393
$eventType = $event->getType();
94-
if ($this->rateLimiter->isRateLimited($eventType)) {
94+
if ($this->rateLimiter->isRateLimited((string) $eventType)) {
9595
$this->logger->warning(
9696
\sprintf('Rate limit exceeded for sending requests of type "%s".', (string) $eventType),
9797
['event' => $event]

src/Transport/RateLimiter.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,22 +93,28 @@ public function handleResponse(Response $response): bool
9393
return false;
9494
}
9595

96-
public function isRateLimited(EventType $eventType): bool
96+
/**
97+
* @param string|EventType $eventType
98+
*/
99+
public function isRateLimited($eventType): bool
97100
{
98101
$disabledUntil = $this->getDisabledUntil($eventType);
99102

100103
return $disabledUntil > time();
101104
}
102105

103-
public function getDisabledUntil(EventType $eventType): int
106+
/**
107+
* @param string|EventType $eventType
108+
*/
109+
public function getDisabledUntil($eventType): int
104110
{
105-
$category = (string) $eventType;
111+
$eventType = $eventType instanceof EventType ? (string) $eventType : $eventType;
106112

107-
if ($eventType === EventType::event()) {
108-
$category = self::DATA_CATEGORY_ERROR;
113+
if ($eventType === 'event') {
114+
$eventType = self::DATA_CATEGORY_ERROR;
109115
}
110116

111-
return max($this->rateLimits['all'] ?? 0, $this->rateLimits[$category] ?? 0);
117+
return max($this->rateLimits['all'] ?? 0, $this->rateLimits[$eventType] ?? 0);
112118
}
113119

114120
private function parseRetryAfterHeader(int $currentTime, string $header): int

tests/Transport/RateLimiterTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,13 @@ public function testIsRateLimited(): void
116116
private function assertEventTypesAreRateLimited(array $eventTypesLimited): void
117117
{
118118
foreach ($eventTypesLimited as $eventType) {
119-
$this->assertTrue($this->rateLimiter->isRateLimited($eventType));
119+
$this->assertTrue($this->rateLimiter->isRateLimited((string) $eventType));
120120
}
121121

122122
$eventTypesNotLimited = array_diff(EventType::cases(), $eventTypesLimited);
123123

124124
foreach ($eventTypesNotLimited as $eventType) {
125-
$this->assertFalse($this->rateLimiter->isRateLimited($eventType));
125+
$this->assertFalse($this->rateLimiter->isRateLimited((string) $eventType));
126126
}
127127
}
128128
}

0 commit comments

Comments
 (0)