<?php
namespace App\EventListener;
use Symfony\Bundle\SecurityBundle\Security\FirewallMap;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
class ThumborListener
{
/**
* @var string
*/
private $server;
/**
* @var FirewallMap
*/
private $firewallMap;
/**
* @var Session
*/
private $session;
public function __construct($server, FirewallMap $firewallMap, Session $session)
{
$this->server = $server;
$this->firewallMap = $firewallMap;
$this->session = $session;
}
public function onKernelController(FilterControllerEvent $event)
{
$request = $event->getRequest();
$firewall = $this->firewallMap->getFirewallConfig($request);
if ($firewall && in_array($firewall->getName(), ['api_headers', 'api'])) {
$this->session->set('thumbor', $this->checkThumbor());
}
}
private function checkThumbor()
{
$res = curl_init($this->server);
curl_setopt($res, CURLOPT_HEADER, true); // we want headers
curl_setopt($res, CURLOPT_NOBODY, true); // we don't need body
curl_setopt($res, CURLOPT_RETURNTRANSFER,1);
curl_setopt($res, CURLOPT_TIMEOUT,10);
if (!$output = curl_exec($res)) {
$serverLiving = false;
} else {
$serverLiving = true;
}
curl_close($res);
return $serverLiving;
}
}