vendor/shopware/core/Framework/Increment/Controller/IncrementApiController.php line 79

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Framework\Increment\Controller;
  3. use Shopware\Core\Framework\Increment\IncrementGatewayRegistry;
  4. use Shopware\Core\Framework\Log\Package;
  5. use Shopware\Core\Framework\Routing\Annotation\RouteScope;
  6. use Shopware\Core\Framework\Routing\Annotation\Since;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. /**
  12.  * @Route(defaults={"_routeScope"={"api"}})
  13.  */
  14. #[Package('system-settings')]
  15. class IncrementApiController
  16. {
  17.     private IncrementGatewayRegistry $gatewayRegistry;
  18.     /**
  19.      * @internal
  20.      */
  21.     public function __construct(IncrementGatewayRegistry $gatewayRegistry)
  22.     {
  23.         $this->gatewayRegistry $gatewayRegistry;
  24.     }
  25.     /**
  26.      * @Since("6.4.6.0")
  27.      * @Route("/api/_action/increment/{pool}", name="api.increment.increment", methods={"POST"})
  28.      */
  29.     public function increment(Request $requeststring $pool): Response
  30.     {
  31.         $key $request->request->get('key');
  32.         if (!$key || !\is_string($key)) {
  33.             throw new \InvalidArgumentException('Increment key must be null or a string');
  34.         }
  35.         $cluster $this->getCluster($request);
  36.         $poolGateway $this->gatewayRegistry->get($pool);
  37.         $poolGateway->increment($cluster$key);
  38.         return new JsonResponse(['success' => true]);
  39.     }
  40.     /**
  41.      * @Since("6.4.6.0")
  42.      * @Route("/api/_action/decrement/{pool}", name="api.increment.decrement", methods={"POST"})
  43.      */
  44.     public function decrement(Request $requeststring $pool): Response
  45.     {
  46.         $key $request->request->get('key');
  47.         if (!$key || !\is_string($key)) {
  48.             throw new \InvalidArgumentException('Increment key must be null or a string');
  49.         }
  50.         $cluster $this->getCluster($request);
  51.         $poolGateway $this->gatewayRegistry->get($pool);
  52.         $poolGateway->decrement(
  53.             $cluster,
  54.             $key
  55.         );
  56.         return new JsonResponse(['success' => true]);
  57.     }
  58.     /**
  59.      * @Since("6.4.6.0")
  60.      * @Route("/api/_action/increment/{pool}", name="api.increment.list", methods={"GET"})
  61.      */
  62.     public function getIncrement(string $poolRequest $request): Response
  63.     {
  64.         $cluster $this->getCluster($request);
  65.         $poolGateway $this->gatewayRegistry->get($pool);
  66.         $limit $request->query->getInt('limit'5);
  67.         $offset $request->query->getInt('offset'0);
  68.         $result $poolGateway->list($cluster$limit$offset);
  69.         return new JsonResponse($result);
  70.     }
  71.     /**
  72.      * @Since("6.4.6.0")
  73.      * @Route("/api/_action/reset-increment/{pool}", name="api.increment.reset", methods={"POST"})
  74.      */
  75.     public function reset(string $poolRequest $request): Response
  76.     {
  77.         $cluster $this->getCluster($request);
  78.         $poolGateway $this->gatewayRegistry->get($pool);
  79.         $key $request->request->get('key');
  80.         if ($key !== null && !\is_string($key)) {
  81.             throw new \InvalidArgumentException('Increment key must be null or a string');
  82.         }
  83.         $poolGateway->reset($cluster$key);
  84.         return new JsonResponse(['success' => true]);
  85.     }
  86.     private function getCluster(Request $request): string
  87.     {
  88.         $cluster $request->get('cluster');
  89.         if ($cluster && \is_string($cluster)) {
  90.             return $cluster;
  91.         }
  92.         throw new \InvalidArgumentException('Argument cluster is missing or invalid');
  93.     }
  94. }