Skip to content

Commit

Permalink
Merge pull request #79 from fman42/ChartGoogleQrCodeProvider
Browse files Browse the repository at this point in the history
Implemented new ChartGoogleQrCodeProvider
  • Loading branch information
RobThree committed Oct 20, 2021
2 parents e15885c + 65b17bc commit b79d438
Showing 1 changed file with 67 additions and 0 deletions.
67 changes: 67 additions & 0 deletions lib/Providers/Qr/GoogleChartsQrCodeProvider.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<?php

namespace RobThree\Auth\Providers\Qr;

// https://developers.google.com/chart/infographics/docs/qr_codes
class GoogleChartsQrCodeProvider extends BaseHTTPQRCodeProvider
{
/** @var string */
public $errorcorrectionlevel;

/** @var int */
public $margin;

/** @var string */
public $encoding;

/**
* @param bool $verifyssl
* @param string $errorcorrectionlevel
* @param int $margin
* @param string $encoding
*/
public function __construct($verifyssl = false, $errorcorrectionlevel = 'L', $margin = 4, $encoding = 'UTF-8')
{
if (!is_bool($verifyssl)) {
throw new QRException('VerifySSL must be bool');
}

$this->verifyssl = $verifyssl;

$this->errorcorrectionlevel = $errorcorrectionlevel;
$this->margin = $margin;
$this->encoding = $encoding;
}

/**
* {@inheritdoc}
*/
public function getMimeType()
{
return 'image/png';
}

/**
* {@inheritdoc}
*/
public function getQRCodeImage($qrtext, $size)
{
return $this->getContent($this->getUrl($qrtext, $size));
}

/**
* @param string $qrtext the value to encode in the QR code
* @param int|string $size the desired size of the QR code
*
* @return string file contents of the QR code
*/
public function getUrl($qrtext, $size)
{
return 'https://chart.googleapis.com/chart'
. '?chs=' . $size . 'x' . $size
. '&chld=' . urlencode(strtoupper($this->errorcorrectionlevel) . '|' . $this->margin)
. '&cht=' . 'qr'
. '&choe=' . $this->encoding
. '&chl=' . rawurlencode($qrtext);
}
}

0 comments on commit b79d438

Please sign in to comment.