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