text: <?php
  
  /*
   * This file is part of the Symfony package.
   *
   * (c) Fabien Potencier <fabien@symfony.com>
   *
   * For the full copyright and license information, please view the LICENSE
   * file that was distributed with this source code.
   */
  
  namespace Symfony\Component\HttpKernel\EventListener;
  
  use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
  use Symfony\Component\HttpKernel\KernelEvents;
  
  /**
   * ResponseListener fixes the Response headers based on the Request.
   *
   * @author Fabien Potencier <fabien@symfony.com>
   */
  class ResponseListener implements EventSubscriberInterface
  {
      private $charset;
  
      public function __construct(string $charset)
      {
          $this->charset = $charset;
      }
  
      /**
       * Filters the Response.
       */
      public function onKernelResponse(FilterResponseEvent $event)
      {
          if (!$event->isMasterRequest()) {
              return;
          }
  
          $response = $event->getResponse();
  
          if (null === $response->getCharset()) {
              $response->setCharset($this->charset);
          }
  
          $response->prepare($event->getRequest());
      }
  
      public static function getSubscribedEvents()
      {
          return array(
              KernelEvents::RESPONSE => 'onKernelResponse',
          );
      }
  }
  