3 use Psr\Http\Message\ServerRequestInterface;
\r
4 use TYPO3\CMS\Core\TypoScript\FrontendTypoScript;
\r
5 use TYPO3\CMS\Core\Utility\GeneralUtility;
\r
9 protected function sendRateLimitHeaders(RateLimit $limit): void
\r
11 $tsfe = $this->getTsfe();
\r
12 $typoscript = $tsfe->getConfigArray();
\r
14 $headers = $typoscript['additionalHeaders.'] ?? [];
\r
15 $headers['910.'] = ['header' => 'X-RateLimit-Remaining: ' . $limit->getRemainingTokens()];
\r
16 $headers['911.'] = ['header' => 'X-RateLimit-Retry-After: ' . $limit->getRetryAfter()->getTimestamp() - time()];
\r
17 $headers['912.'] = ['header' => 'X-RateLimit-Limit: ' . $limit->getLimit()];
\r
20 $typoscript['additionalHeaders.'] = $headers;
\r
21 $tsfe->setConfigArray($typoscript);
\r
24 protected function getTsfe(): FrontendTypoScript
\r
26 return $this->getRequest()->getAttribute('frontend.typoscript');
\r
29 protected function getRequest(): ServerRequestInterface
\r
31 return $GLOBALS['TYPO3_REQUEST'];
\r