--- /dev/null
+<?php\r
+\r
+use Psr\Http\Message\ServerRequestInterface;\r
+use TYPO3\CMS\Core\TypoScript\FrontendTypoScript;\r
+use TYPO3\CMS\Core\Utility\GeneralUtility;\r
+\r
+class Foo\r
+{\r
+ protected function sendRateLimitHeaders(RateLimit $limit): void\r
+ {\r
+ $tsfe = $this->getTsfe();\r
+ $typoscript = $tsfe->getConfigArray();\r
+\r
+ $headers = $typoscript['additionalHeaders.'] ?? [];\r
+ $headers['910.'] = ['header' => 'X-RateLimit-Remaining: ' . $limit->getRemainingTokens()];\r
+ $headers['911.'] = ['header' => 'X-RateLimit-Retry-After: ' . $limit->getRetryAfter()->getTimestamp() - time()];\r
+ $headers['912.'] = ['header' => 'X-RateLimit-Limit: ' . $limit->getLimit()];\r
+\r
+\r
+ $typoscript['additionalHeaders.'] = $headers;\r
+ $tsfe->setConfigArray($typoscript);\r
+ }\r
+\r
+ protected function getTsfe(): FrontendTypoScript\r
+ {\r
+ return $this->getRequest()->getAttribute('frontend.typoscript');\r
+ }\r
+\r
+ protected function getRequest(): ServerRequestInterface\r
+ {\r
+ return $GLOBALS['TYPO3_REQUEST'];\r
+ }\r