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

Open in your IDE?
  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\FilterResponseEvent;
  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.     /**
  25.      * Constructor.
  26.      *
  27.      * @param AllowedMethodsLoaderInterface $loader
  28.      */
  29.     public function __construct(AllowedMethodsLoaderInterface $loader)
  30.     {
  31.         $this->loader $loader;
  32.     }
  33.     /**
  34.      * @param FilterResponseEvent $event
  35.      */
  36.     public function onKernelResponse(FilterResponseEvent $event)
  37.     {
  38.         $request $event->getRequest();
  39.         if (!$request->attributes->get(FOSRestBundle::ZONE_ATTRIBUTEtrue)) {
  40.             return;
  41.         }
  42.         $allowedMethods $this->loader->getAllowedMethods();
  43.         if (isset($allowedMethods[$event->getRequest()->get('_route')])) {
  44.             $event->getResponse()
  45.                 ->headers
  46.                 ->set('Allow'implode(', '$allowedMethods[$event->getRequest()->get('_route')]));
  47.         }
  48.     }
  49. }