<?php
declare(strict_types=1);
namespace App\Controller\V1;
use chillerlan\QRCode\QRCode;
use chillerlan\QRCode\QROptions;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Swagger\Annotations as SWG;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
/**
* @Route("/barcode")
* @SWG\Tag(name="Order_v1")
*/
class BarcodeController
{
private function createResponse(string $base64): Response
{
$response = new Response();
$response->headers->set('Content-Type', 'text/plain');
$response->headers->set('Content-transfer-encoding', 'base64');
$response->setContent($base64);
return $response;
}
/**
* @Route("/{code}", methods={"GET"})
* @SWG\Response(response="200", description="Success")
*
* @param string $code
* @return Response
* @throws \PBA\Barcode\Exceptions\BarcodeException
*/
public function indexAction(string $code)
{
$generator = new \PBA\Barcode\BarcodeGeneratorPNG();
return $this->createResponse(
''
. 'data:image/png;base64,'
. base64_encode($generator->getBarcode($code, $generator::TYPE_CODE_128, 2, 74))
);
}
/**
* @Route("/qr/{code}", methods={"GET"})
* @SWG\Response(response="200", description="Success")
* @param string $code
*
* @return Response
*/
public function qrAction(string $code)
{
$options = new QROptions();
$options->addQuietzone = false;
return $this->createResponse((new QRCode($options))->render($code));
}
/**
* @Route("/mailbarcode/{code}", methods={"GET"}, name="app_barcode_barcode")
* @SWG\Response(response="200", description="Success")
*
* @param string $code
* @return Response
* @throws \PBA\Barcode\Exceptions\BarcodeException
*/
public function barcodeMailAction(string $code)
{
$generator = new \PBA\Barcode\BarcodeGeneratorPNG();
$response = new Response($generator->getBarcode($code, $generator::TYPE_CODE_128, 2, 74));
$disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, 'barcode.png');
$response->headers->set('Content-Disposition', $disposition);
$response->headers->set('Content-type', 'image/png');
return $response;
}
/**
* @Route("/mailqr/{code}", methods={"GET"}, name="app_barcode_qr")
* @SWG\Response(response="200", description="Success")
* @param string $code
*
* @return Response
*/
public function qrMAilAction(string $code)
{
$options = new QROptions();
$options->addQuietzone = false;
$options->imageBase64 = false;
$options->outputType = QRCode::OUTPUT_IMAGE_PNG;
$response = new Response((new QRCode($options))->render($code));
$disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_INLINE, 'qr.png');
$response->headers->set('Content-Disposition', $disposition);
$response->headers->set('Content-type', 'image/png');
return $response;
}
}