vendor/friendsofsymfony/rest-bundle/EventListener/AllowedMethodsListener.php line 34

  1. <?php
  2. /*
  3.  * This file is part of the FOSRestBundle package.
  4.  *
  5.  * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace FOS\RestBundle\EventListener;
  11. use FOS\RestBundle\FOSRestBundle;
  12. use FOS\RestBundle\Response\AllowedMethodsLoader\AllowedMethodsLoaderInterface;
  13. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  14. /**
  15.  * Listener to append Allow-ed methods for a given route/resource.
  16.  *
  17.  * @author Boris GuĂ©ry <guery.b@gmail.com>
  18.  *
  19.  * @internal
  20.  */
  21. class AllowedMethodsListener
  22. {
  23.     private $loader;
  24.     public function __construct(AllowedMethodsLoaderInterface $loader)
  25.     {
  26.         $this->loader $loader;
  27.     }
  28.     public function onKernelResponse(ResponseEvent $event): void
  29.     {
  30.         $request $event->getRequest();
  31.         if (!$request->attributes->get(FOSRestBundle::ZONE_ATTRIBUTEtrue)) {
  32.             return;
  33.         }
  34.         $allowedMethods $this->loader->getAllowedMethods();
  35.         if (isset($allowedMethods[$event->getRequest()->get('_route')])) {
  36.             $event->getResponse()
  37.                 ->headers
  38.                 ->set('Allow'implode(', '$allowedMethods[$event->getRequest()->get('_route')]));
  39.         }
  40.     }
  41. }