/**
  * Inject custom Asset package to Kernel assets helper
  *
  * @param KernelEvent $event
  */
 public function onKernelRequest(KernelEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     // retrieve needed params
     $kernel = $this->container->get('kernel');
     $environment = $kernel->getEnvironment();
     $nodeEnvironment = $this->container->getParameter('grunt.environment');
     // cachebusting shouldn't be applied in node environment
     // BrowserSync delivers files from app/Resources
     if ($environment != $nodeEnvironment) {
         // defaulrts to web folder
         $rootDir = $this->container->getParameter('grunt.filerev.root_dir');
         $package = new FilerevPackage();
         $package->setRoot($rootDir);
         // catalogue holds rev data from grunt-filerev
         // generated by the command `grunt rev` which is called during the build process
         $this->initializeCacheCatalogue();
         $package->setSummary($this->catalogue);
         $assetsHelper = $this->container->get('templating.helper.assets');
         $assetsHelper->setDefaultPackage($package);
     }
 }
 /**
  * Checks whether the request is a Contao front end master request.
  *
  * @param KernelEvent $event
  *
  * @return bool
  */
 protected function isFrontendMasterRequest(KernelEvent $event)
 {
     return $event->isMasterRequest() && $this->isFrontendScope();
 }
 /**
  * @param KernelEvent $event
  *
  * @return bool
  */
 protected function isEventEligible(KernelEvent $event)
 {
     return $event->isMasterRequest();
 }
 /**
  * @param KernelEvent $event
  * @return bool
  */
 protected function isActive(KernelEvent $event)
 {
     $request = $event->getRequest();
     if ($this->active === true) {
         return true;
     }
     $this->active = false;
     if ($event instanceof FilterControllerEvent) {
         if (!$event->isMasterRequest()) {
             return false;
         }
         if ($event->getController()[0] instanceof RestApiControllerInterface) {
             return $this->active = true;
         }
     }
     foreach ($this->whitelist as $whitelist) {
         if (preg_match($whitelist, $request->getPathInfo())) {
             return $this->active = true;
         }
     }
     foreach ($this->blacklist as $blacklist) {
         if (preg_match($blacklist, $request->getPathInfo())) {
             $this->active = false;
         }
     }
     return $this->active;
 }