src/Controller/V1/BarcodeController.php line 37

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\V1;
  4. use chillerlan\QRCode\QRCode;
  5. use chillerlan\QRCode\QROptions;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Swagger\Annotations as SWG;
  9. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  10. /**
  11.  * @Route("/barcode")
  12.  * @SWG\Tag(name="Order_v1")
  13.  */
  14. class BarcodeController
  15. {
  16.     private function createResponse(string $base64): Response
  17.     {
  18.         $response = new Response();
  19.         $response->headers->set('Content-Type''text/plain');
  20.         $response->headers->set('Content-transfer-encoding''base64');
  21.         $response->setContent($base64);
  22.         return $response;
  23.     }
  24.     /**
  25.      * @Route("/{code}", methods={"GET"})
  26.      * @SWG\Response(response="200", description="Success")
  27.      *
  28.      * @param string $code
  29.      * @return Response
  30.      * @throws \PBA\Barcode\Exceptions\BarcodeException
  31.      */
  32.     public function indexAction(string $code)
  33.     {
  34.         $generator = new \PBA\Barcode\BarcodeGeneratorPNG();
  35.         return $this->createResponse(
  36.             ''
  37.             'data:image/png;base64,'
  38.             base64_encode($generator->getBarcode($code$generator::TYPE_CODE_128274))
  39.         );
  40.     }
  41.     /**
  42.      * @Route("/qr/{code}", methods={"GET"})
  43.      * @SWG\Response(response="200", description="Success")
  44.      * @param string $code
  45.      *
  46.      * @return Response
  47.      */
  48.     public function qrAction(string $code)
  49.     {
  50.         $options = new QROptions();
  51.         $options->addQuietzone false;
  52.         return $this->createResponse((new QRCode($options))->render($code));
  53.     }
  54.     /**
  55.      * @Route("/mailbarcode/{code}", methods={"GET"}, name="app_barcode_barcode")
  56.      * @SWG\Response(response="200", description="Success")
  57.      *
  58.      * @param string $code
  59.      * @return Response
  60.      * @throws \PBA\Barcode\Exceptions\BarcodeException
  61.      */
  62.     public function barcodeMailAction(string $code)
  63.     {
  64.         $generator = new \PBA\Barcode\BarcodeGeneratorPNG();
  65.         $response = new Response($generator->getBarcode($code$generator::TYPE_CODE_128274));
  66.         $disposition $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE'barcode.png');
  67.         $response->headers->set('Content-Disposition'$disposition);
  68.         $response->headers->set('Content-type''image/png');
  69.         return $response;
  70.     }
  71.     /**
  72.      * @Route("/mailqr/{code}", methods={"GET"}, name="app_barcode_qr")
  73.      * @SWG\Response(response="200", description="Success")
  74.      * @param string $code
  75.      *
  76.      * @return Response
  77.      */
  78.     public function qrMAilAction(string $code)
  79.     {
  80.         $options = new QROptions();
  81.         $options->addQuietzone false;
  82.         $options->imageBase64 false;
  83.         $options->outputType QRCode::OUTPUT_IMAGE_PNG;
  84.         $response = new Response((new QRCode($options))->render($code));
  85.         $disposition $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE'qr.png');
  86.         $response->headers->set('Content-Disposition'$disposition);
  87.         $response->headers->set('Content-type''image/png');
  88.         return $response;
  89.     }
  90.     
  91. }