czydojade/src/Service/ProviderParameterConverter.php
2018-09-02 19:23:38 +02:00

43 lines
1.2 KiB
PHP

<?php
namespace App\Service;
use App\Exception\NonExistentServiceException;
use App\Provider\Provider;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class ProviderParameterConverter implements ParamConverterInterface
{
private $resolver;
/**
* ProviderParameterConverter constructor.
*
* @param $resolver
*/
public function __construct(ProviderResolver $resolver)
{
$this->resolver = $resolver;
}
public function apply(Request $request, ParamConverter $configuration)
{
$provider = $request->get('provider');
try {
$request->attributes->set('provider', $this->resolver->resolve($provider));
} catch (NonExistentServiceException $exception) {
throw new NotFoundHttpException("There is no such provider as '$provider'.", $exception);
}
}
public function supports(ParamConverter $configuration)
{
return $configuration->getName() === 'provider' && is_a($configuration->getClass(), Provider::class, true);
}
}