src/Infrastructure/Service/AbstractService.php line 81

Open in your IDE?
  1. <?php
  2. namespace App\Infrastructure\Service;
  3. use App\Helper\MonthLabelConverterHelper;
  4. use App\Infrastructure\Traits\HydraTrait;
  5. use GuzzleHttp\Client;
  6. use GuzzleHttp\ClientInterface;
  7. use JsonMapper\JsonMapperFactory;
  8. use JsonMapper\JsonMapperInterface;
  9. use Psr\Log\LoggerInterface;
  10. use Symfony\Component\HttpFoundation\RequestStack;
  11. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  12. use Symfony\Component\Security\Core\Security;
  13. use Symfony\Component\Serializer\SerializerInterface;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. /**
  16.  * AbstractService
  17.  */
  18. abstract class AbstractService
  19. {
  20.     use HydraTrait;
  21.     /**
  22.      * @var string
  23.      */
  24.     protected string $milkiyaBaseUrl;
  25.     /**
  26.      * @var LoggerInterface
  27.      */
  28.     protected LoggerInterface $logger;
  29.     /**
  30.      * @var Security
  31.      */
  32.     protected Security $security;
  33.     /**
  34.      * @var JsonMapperInterface
  35.      */
  36.     protected JsonMapperInterface $mapper;
  37.     /**
  38.      * @var SessionInterface
  39.      */
  40.     protected SessionInterface $session;
  41.     /**
  42.      * @var TranslatorInterface
  43.      */
  44.     protected TranslatorInterface $translator;
  45.     /**
  46.      * @var MonthLabelConverterHelper
  47.      */
  48.     protected MonthLabelConverterHelper $monthLabelConverterHelper;
  49.     /**
  50.      * @var ClientInterface
  51.      */
  52.     protected ClientInterface $client;
  53.     /** @var SerializerInterface  */
  54.     protected SerializerInterface $serializer;
  55.     /**
  56.      * @param string $milkiyaBaseUrl
  57.      * @param LoggerInterface $logger
  58.      * @param Security $security
  59.      * @param RequestStack $requestStack
  60.      * @param TranslatorInterface $translator
  61.      * @param MonthLabelConverterHelper $monthLabelConverterHelper
  62.      */
  63.     public function __construct(
  64.         string $milkiyaBaseUrl,
  65.         LoggerInterface $logger,
  66.         Security $security,
  67.         RequestStack $requestStack,
  68.         TranslatorInterface $translator,
  69.         MonthLabelConverterHelper $monthLabelConverterHelper,
  70.         SerializerInterface $serializer
  71.     ) {
  72.         $this->milkiyaBaseUrl $milkiyaBaseUrl;
  73.         $this->logger $logger;
  74.         $this->security $security;
  75.         $this->session $requestStack->getSession();
  76.         $this->mapper = (new JsonMapperFactory())->bestFit();
  77.         $this->requestStack $requestStack;
  78.         $this->translator $translator;
  79.         $this->monthLabelConverterHelper $monthLabelConverterHelper;
  80.         $this->serializer $serializer;
  81.         $this->setUpClient();
  82.     }
  83.     /**
  84.      * set up default parameters
  85.      *
  86.      * @return void
  87.      */
  88.     private function setUpClient(): void
  89.     {
  90.         $token '';
  91.         if ($this->isAuthenticated()) {
  92.             $token $this->security->getUser()->getToken();
  93.         }
  94.         $this->client = new Client([
  95.             'headers' => [
  96.                 'Content-Type' => 'application/json',
  97.                 'Accept-Language' => $this->translator->getLocale(),
  98.                 'Authorization' => "Bearer " $token
  99.             ],
  100.             'verify' => false,
  101.             'base_uri' => $this->milkiyaBaseUrl,
  102.         ]);
  103.     }
  104.     private function isAuthenticated(): bool
  105.     {
  106.         if ($this->security->getUser()) {
  107.             return true;
  108.         }
  109.         return false;
  110.     }
  111. }