src/Domain/Gateway/UseCases/GenerateGateway/GenerateGateway.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Domain\Gateway\UseCases\GenerateGateway;
  3. use App\Domain\Gateway\Entities\Exception\GatewayGeneratorNotSupportedException;
  4. use App\Domain\Gateway\Entities\GatewayManagerInterface;
  5. final class GenerateGateway
  6. {
  7.     private GatewayManagerInterface $gatewayManager;
  8.     public function __construct(GatewayManagerInterface $gatewayManager)
  9.     {
  10.         $this->gatewayManager $gatewayManager;
  11.     }
  12.     /**
  13.      * @param GenerateGatewayRequest   $request
  14.      * @param GenerateGatewayPresenter $presenter
  15.      *
  16.      * @throws GatewayGeneratorNotSupportedException
  17.      */
  18.     public function execute(GenerateGatewayRequest $requestGenerateGatewayPresenter $presenter): void
  19.     {
  20.         $generator $this->gatewayManager->getGenerator($request->getSlug());
  21.         if (null === $generator) {
  22.             throw new GatewayGeneratorNotSupportedException($request->getSlug());
  23.         }
  24.         $presenter->present(
  25.             new GenerateGatewayResponse(
  26.                 $request->getSlug(),
  27.                 $generator->generate(),
  28.                 $generator::FORMAT,
  29.                 $generator::ITEM_TAG
  30.             )
  31.         );
  32.     }
  33. }