vendor/die-leoparden/cookie-consent/Controller/ApiController.php line 20

Open in your IDE?
  1. <?php
  2. /**
  3.  * CookieConsentBundle
  4.  * Copyright (c) Die Leoparden GmbH
  5.  */
  6. namespace DieLeoparden\CookieConsentBundle\Controller;
  7. use Pimcore\Cache;
  8. use Pimcore\Model\DataObject\CookieConsentEntry;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. /**
  13.  * Class ApiController
  14.  *
  15.  * @Route("/cookie-consent/{api_token}", requirements={"api_token"="^[A-Za-z0-9]*$"})
  16.  */
  17. class ApiController extends AbstractController
  18. {
  19.     /**
  20.      * @param Request $request
  21.      *
  22.      * @return Response
  23.      *
  24.      * @Route("/tarteaucitron.js", name="die_leoparden.cookie_consent.script")
  25.      */
  26.     public function scriptAction(Request $request): Response
  27.     {
  28.         /** @var string $apiToken */
  29.         $apiToken $request->get('api_token');
  30.         /** @var string|null $scriptContent */
  31.         $scriptContent Cache::load($this->getScriptCacheIdentifier($apiToken));
  32.         if ($scriptContent) {
  33.             return $this->getScriptResponse($scriptContent);
  34.         }
  35.         /** @var CookieConsentEntry|null $cookieConsentEntry */
  36.         $cookieConsentEntry CookieConsentEntry::getByApiToken($apiToken1);
  37.         if (!$cookieConsentEntry instanceof CookieConsentEntry) {
  38.             return $this->getErrorResponse();
  39.         }
  40.         $scriptContent $this->renderView('@CookieConsent/Api/script.html.twig', [
  41.             'entry' => $cookieConsentEntry,
  42.             'script' => file_get_contents($this->getBuildPath() . 'tarteaucitron.js'),
  43.         ]);
  44.         Cache::save($scriptContent$this->getScriptCacheIdentifier($apiToken));
  45.         return $this->getScriptResponse($scriptContent);
  46.     }
  47.     /**
  48.      * @param Request $request
  49.      *
  50.      * @return Response
  51.      *
  52.      * @Route("/css/tarteaucitron.css", name="die_leoparden.cookie_consent.stylesheet")
  53.      */
  54.     public function stylesheetAction(Request $request): Response
  55.     {
  56.         /** @var string $apiToken */
  57.         $apiToken $request->get('api_token');
  58.         /** @var string|null $stylesheetContent */
  59.         $stylesheetContent Cache::load($this->getStylesheetCacheIdentifier($apiToken));
  60.         if ($stylesheetContent) {
  61.             return $this->getStylesheetResponse($stylesheetContent);
  62.         }
  63.         /** @var CookieConsentEntry|null $cookieConsentEntry */
  64.         $cookieConsentEntry CookieConsentEntry::getByApiToken($apiToken1);
  65.         if (!$cookieConsentEntry instanceof CookieConsentEntry) {
  66.             return $this->getErrorResponse();
  67.         }
  68.         $stylesheetContent $this->renderView('@CookieConsent/Api/stylesheet.html.twig', [
  69.             'entry' => $cookieConsentEntry,
  70.             'stylesheet' => file_get_contents($this->getBuildPath() . 'css/tarteaucitron.css'),
  71.         ]);
  72.         Cache::save($stylesheetContent$this->getStylesheetCacheIdentifier($apiToken));
  73.         return $this->getStylesheetResponse($stylesheetContent);
  74.     }
  75.     /**
  76.      * @param Request $request
  77.      *
  78.      * @return Response
  79.      *
  80.      * @Route("/lang/tarteaucitron.{language}.js", name="die_leoparden.cookie_consent.language_script", requirements={"language"="^[a-z]*$"})
  81.      */
  82.     public function languageScriptAction(Request $request): Response
  83.     {
  84.         /** @var string $apiToken */
  85.         $apiToken $request->get('api_token');
  86.         /** @var string|null $languageScriptContent */
  87.         $languageScriptContent Cache::load($this->getLanguageScriptCacheIdentifier($apiToken));
  88.         if ($languageScriptContent) {
  89.             return $this->getScriptResponse($languageScriptContent);
  90.         }
  91.         /** @var CookieConsentEntry|null $cookieConsentEntry */
  92.         $cookieConsentEntry CookieConsentEntry::getByApiToken($apiToken1);
  93.         if (!$cookieConsentEntry instanceof CookieConsentEntry) {
  94.             return $this->getErrorResponse();
  95.         }
  96.         /** @var string $language */
  97.         $language $request->get('language');
  98.         if (!file_exists($this->getBuildPath() . 'lang/tarteaucitron.' $language '.js')) {
  99.             return $this->getErrorResponse('No valid language');
  100.         }
  101.         $languageScriptContent $this->renderView('@CookieConsent/Api/language_script.html.twig', [
  102.             'entry' => $cookieConsentEntry,
  103.             'language_script' => file_get_contents($this->getBuildPath() . 'lang/tarteaucitron.' $language '.js'),
  104.         ]);
  105.         Cache::save($languageScriptContent$this->getLanguageScriptCacheIdentifier($apiToken));
  106.         return $this->getScriptResponse($languageScriptContent);
  107.     }
  108.     /**
  109.      * @param Request $request
  110.      *
  111.      * @return Response
  112.      *
  113.      * @Route("/tarteaucitron.services.js", name="die_leoparden.cookie_consent.service_script")
  114.      */
  115.     public function serviceScriptAction(Request $request): Response
  116.     {
  117.         /** @var string $apiToken */
  118.         $apiToken $request->get('api_token');
  119.         /** @var string|null $serviceScriptContent */
  120.         $serviceScriptContent Cache::load($this->getServiceScriptCacheIdentifier($apiToken));
  121.         if ($serviceScriptContent) {
  122.             return $this->getScriptResponse($serviceScriptContent);
  123.         }
  124.         /** @var CookieConsentEntry|null $cookieConsentEntry */
  125.         $cookieConsentEntry CookieConsentEntry::getByApiToken($apiToken1);
  126.         if (!$cookieConsentEntry instanceof CookieConsentEntry) {
  127.             return $this->getErrorResponse();
  128.         }
  129.         $serviceScriptContent $this->renderView('@CookieConsent/Api/service_script.html.twig', [
  130.             'entry' => $cookieConsentEntry,
  131.             'service_script' => file_get_contents($this->getBuildPath() . 'tarteaucitron.services.js'),
  132.         ]);
  133.         Cache::save($serviceScriptContent$this->getServiceScriptCacheIdentifier($apiToken));
  134.         return $this->getScriptResponse($serviceScriptContent);
  135.     }
  136. }