(no commit message)
[paste/944.git] / phork0.php
1 <?php\r
2 \r
3 use Psr\Http\Message\ServerRequestInterface;\r
4 use TYPO3\CMS\Core\TypoScript\FrontendTypoScript;\r
5 use TYPO3\CMS\Core\Utility\GeneralUtility;\r
6 \r
7 class Foo\r
8 {\r
9     protected function sendRateLimitHeaders(RateLimit $limit): void\r
10     {\r
11         $tsfe = $this->getTsfe();\r
12         $typoscript = $tsfe->getConfigArray();\r
13 \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
18 \r
19 \r
20         $typoscript['additionalHeaders.'] = $headers;\r
21         $tsfe->setConfigArray($typoscript);\r
22     }\r
23 \r
24     protected function getTsfe(): FrontendTypoScript\r
25     {\r
26         return $this->getRequest()->getAttribute('frontend.typoscript');\r
27     }\r
28 \r
29     protected function getRequest(): ServerRequestInterface\r
30     {\r
31         return $GLOBALS['TYPO3_REQUEST'];\r
32     }\r