blob: 166a8a92edc3d7baff775649d9849f2fc0e143dc [file] [log] [blame]
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +01001<?php
2
3namespace RobThree\Auth\Providers\Qr;
4
5// http://qrickit.com/qrickit_apps/qrickit_api.php
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +02006class QRicketProvider extends BaseHTTPQRCodeProvider
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +01007{
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +02008 /** @var string */
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +01009 public $errorcorrectionlevel;
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020010
11 /** @var string */
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010012 public $bgcolor;
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020013
14 /** @var string */
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010015 public $color;
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020016
17 /** @var string */
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010018 public $format;
19
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020020 /**
21 * @param string $errorcorrectionlevel
22 * @param string $bgcolor
23 * @param string $color
24 * @param string $format
25 */
26 public function __construct($errorcorrectionlevel = 'L', $bgcolor = 'ffffff', $color = '000000', $format = 'p')
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010027 {
28 $this->verifyssl = false;
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020029
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010030 $this->errorcorrectionlevel = $errorcorrectionlevel;
31 $this->bgcolor = $bgcolor;
32 $this->color = $color;
33 $this->format = $format;
34 }
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020035
36 /**
37 * {@inheritdoc}
38 */
39 public function getMimeType()
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010040 {
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020041 switch (strtolower($this->format)) {
42 case 'p':
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010043 return 'image/png';
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020044 case 'g':
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010045 return 'image/gif';
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020046 case 'j':
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010047 return 'image/jpeg';
48 }
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020049 throw new QRException(sprintf('Unknown MIME-type: %s', $this->format));
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010050 }
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020051
52 /**
53 * {@inheritdoc}
54 */
55 public function getQRCodeImage($qrtext, $size)
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010056 {
57 return $this->getContent($this->getUrl($qrtext, $size));
58 }
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020059
60 /**
61 * @param string $qrtext the value to encode in the QR code
62 * @param int|string $size the desired size of the QR code
63 *
64 * @return string file contents of the QR code
65 */
66 public function getUrl($qrtext, $size)
Matthias Andreas Benkardb382b102021-01-02 15:32:21 +010067 {
68 return 'http://qrickit.com/api/qr'
69 . '?qrsize=' . $size
70 . '&e=' . strtolower($this->errorcorrectionlevel)
71 . '&bgdcolor=' . $this->bgcolor
72 . '&fgdcolor=' . $this->color
73 . '&t=' . strtolower($this->format)
74 . '&d=' . rawurlencode($qrtext);
75 }
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020076}