vendor/drosalys/api-bundle/src/Request/ParamConverter/AutoInstanceObjectParamConverter.php line 35

Open in your IDE?
  1. <?php
  2. /*
  3. * This file is part of the drosalys/api-bundle package.
  4. *
  5. * (c) Benjamin Georgeault
  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 Drosalys\Bundle\ApiBundle\Request\ParamConverter;
  11. use Drosalys\Bundle\ApiBundle\Request\ActionRequestTrait;
  12. use Drosalys\Bundle\ApiBundle\Routing\Attributes\AbstractRoute;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  14. use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter;
  15. use Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterInterface;
  16. use Symfony\Component\HttpFoundation\Request;
  17. /**
  18. * Class AutoInstanceObjectParamConverter
  19. *
  20. * @author Benjamin Georgeault
  21. */
  22. class AutoInstanceObjectParamConverter implements ParamConverterInterface
  23. {
  24. use ActionRequestTrait;
  25. public function __construct(
  26. private DoctrineParamConverter $converter,
  27. ) {
  28. }
  29. public function apply(Request $request, ParamConverter $configuration)
  30. {
  31. if (
  32. (null !== $action = $this->retrieveActionFromRequest($request))
  33. && $action->isMethod(AbstractRoute::POST)
  34. && (null !== $deserializeInfo = $action->getDeserializeInfo())
  35. && $configuration->getName() === $deserializeInfo->getName()
  36. ) {
  37. $class = $deserializeInfo->getType()->getClassName();
  38. $request->attributes->set($configuration->getName(), new $class());
  39. return true;
  40. }
  41. if ($this->converter->supports($configuration)) {
  42. return $this->converter->apply($request, $configuration);
  43. }
  44. return false;
  45. }
  46. public function supports(ParamConverter $configuration): bool
  47. {
  48. if ($this->converter->supports($configuration)) {
  49. return true;
  50. }
  51. return null !== $configuration->getClass();
  52. }
  53. }