Sfoglia il codice sorgente

Set QrCodeService as static behind a Facade

Bubka 3 anni fa
parent
commit
2fcaf46c9d

+ 3 - 20
app/Api/v1/Controllers/QrCodeController.php

@@ -3,30 +3,13 @@
 namespace App\Api\v1\Controllers;
 
 use App\Models\TwoFAccount;
-use App\Services\QrCodeService;
+use App\Facades\QrCode;
 use App\Api\v1\Requests\QrCodeDecodeRequest;
 use App\Http\Controllers\Controller;
 
 
 class QrCodeController extends Controller
 {
-    /**
-     * The QR code Service instance.
-     */
-    protected $qrcodeService;
-
-
-    /**
-     * Create a new controller instance.
-     *
-     * @param \App\Services\QrCodeService  $qrcodeService
-     * @return void
-     */
-    public function __construct(QrCodeService $qrcodeService)
-    {
-        $this->qrcodeService = $qrcodeService;
-    }
-
 
     /**
      * Show a QR code image
@@ -38,7 +21,7 @@ class QrCodeController extends Controller
     {
         $uri = $twofaccount->getURI();
 
-        return response()->json(['qrcode' => $this->qrcodeService->encode($uri)], 200);
+        return response()->json(['qrcode' => QrCode::encode($uri)], 200);
     }
 
 
@@ -52,7 +35,7 @@ class QrCodeController extends Controller
     {
         $file = $request->file('qrcode');
 
-        return response()->json(['data' => $this->qrcodeService->decode($file)], 200);
+        return response()->json(['data' => QrCode::decode($file)], 200);
     }
     
 }

+ 14 - 0
app/Facades/QrCode.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Facades;
+
+use App\Services\QrCodeService;
+use Illuminate\Support\Facades\Facade;
+
+class QrCode extends Facade
+{
+    protected static function getFacadeAccessor()
+    {
+        return QrCodeService::class;
+    }
+}

+ 0 - 6
app/Providers/TwoFAuthServiceProvider.php

@@ -3,7 +3,6 @@
 namespace App\Providers;
 
 use App\Services\LogoService;
-use App\Services\QrCodeService;
 use App\Services\SettingService;
 use App\Services\GroupService;
 use App\Services\TwoFAccountService;
@@ -31,10 +30,6 @@ class TwoFAuthServiceProvider extends ServiceProvider implements DeferrableProvi
             return new LogoService();
         });
 
-        $this->app->singleton(QrCodeService::class, function () {
-            return new QrCodeService();
-        });
-
         $this->app->singleton(TwoFAccountService::class, function () {
             return new TwoFAccountService();
         });
@@ -61,7 +56,6 @@ class TwoFAuthServiceProvider extends ServiceProvider implements DeferrableProvi
         return [
             GroupService::class,
             LogoService::class,
-            QrCodeService::class,
             TwoFAccountService::class,
         ];
     }

+ 2 - 2
app/Services/QrCodeService.php

@@ -15,7 +15,7 @@ class QrCodeService
      * 
      * @return mixed 
      */
-    public function encode(string $data)
+    public static function encode(string $data)
     {
         $options = new QROptions([
             'quietzoneSize' => 2,
@@ -35,7 +35,7 @@ class QrCodeService
      * 
      * @param \Illuminate\Http\UploadedFile $file
      */
-    public function decode(\Illuminate\Http\UploadedFile $file)
+    public static function decode(\Illuminate\Http\UploadedFile $file)
     {
         $qrcode = new QrReader($file->get(), QrReader::SOURCE_TYPE_BLOB);
         $data = urldecode($qrcode->text());

+ 4 - 13
tests/Feature/Services/QrCodeServiceTest.php

@@ -4,19 +4,13 @@ namespace Tests\Feature\Services;
 
 use Tests\FeatureTestCase;
 use Tests\Classes\LocalFile;
-use App\Services\QrCodeService;
-
+use App\Facades\QrCode;
 
 /**
  * @covers \App\Services\QrCodeService
  */
 class QrCodeServiceTest extends FeatureTestCase
 {
-    /**
-     * App\Services\QrCodeService $qrcodeService
-     */
-    protected $qrcodeService;
-
     private const STRING_TO_ENCODE = 'stringToEncode';
     private const STRING_ENCODED = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAABnRSTlMA/wD/AP83WBt9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADOklEQVR4nO3dMW7kMBAAwdPh/v/ldeBLFRCYBkm7KveaEBoMBhT1fD6fPzDt7+4F8DMJi4SwSAiLhLBICIuEsEgIi4SwSAiLhLBICIuEsEgIi4SwSPxb/YPneYp1jHs7Z7a6/tXzam+/P7WeXVafgx2LhLBICIuEsEgIi4SwSAiLxPIc682u9xOn5lKnzZNueZ5v7FgkhEVCWCSERUJYJIRFQlgkxuZYb6bmIlNznanzUrfPmer127FICIuEsEgIi4SwSAiLhLBI5HOs290y3zqNHYuEsEgIi4SwSAiLhLBICIuEOdZ/p71XeDs7FglhkRAWCWGREBYJYZEQFol8jnXa+aTT1rPqlvXbsUgIi4SwSAiLhLBICIuEsEiMzbFuOc9U34819b7hLc/zjR2LhLBICIuEsEgIi4SwSAiLxHPL+Z7a1HcP+WbHIiEsEsIiISwSwiIhLBLCIrE8x6rPCU2tpz5f9eaWc1r1Ou1YJIRFQlgkhEVCWCSERUJYJPLzWKd912/Xuavb3xM0x+IIwiIhLBLCIiEsEsIiISwSy/dj7ZpL1fOn+nxS/X/rc2ar7FgkhEVCWCSERUJYJIRFQlgk8u8VrjrtPb4p9VxtVf37diwSwiIhLBLCIiEsEsIiISwS+f1Yu+6dmlKvf8ppczs7FglhkRAWCWGREBYJYZEQFolf973C0+5bX7XrPcRVdiwSwiIhLBLCIiEsEsIiISwSx32vcMqu+9lP+7+7zmnZsUgIi4SwSAiLhLBICIuEsEiM3Y91y/cH699Z/f2357Y6l6qfg+8VcgRhkRAWCWGREBYJYZEQFon8nvf6XvJd6vNP9fcHvVfIlYRFQlgkhEVCWCSERUJYJI77XmHttPvQp9az6x78N3YsEsIiISwSwiIhLBLCIiEsEr9ujjXltHvCTvt+oh2LhLBICIuEsEgIi4SwSAiLRD7HOu19wDf1veqn3V9V/74di4SwSAiLhLBICIuEsEgIi8TYHOu080mrpt7LO+3+qqn75VfZsUgIi4SwSAiLhLBICIuEsEg8t5yX4i52LBLCIiEsEsIiISwSwiIhLBLCIiEsEsIiISwSwiIhLBLCIiEsEl+BmgChoSs9XAAAAABJRU5ErkJggg==';
     private const DECODED_IMAGE = 'otpauth://totp/test@test.com?secret=A4GRFHVIRBGY7UIW';
@@ -28,8 +22,6 @@ class QrCodeServiceTest extends FeatureTestCase
     public function setUp() : void
     {
         parent::setUp();
-
-        $this->qrcodeService = $this->app->make(QrCodeService::class);
     }
 
 
@@ -38,8 +30,7 @@ class QrCodeServiceTest extends FeatureTestCase
      */
     public function test_encode_returns_correct_value()
     {
-        // $rendered = $this->qrcodeService->encode(self::STRING_TO_ENCODE);
-        $this->assertEquals(self::STRING_ENCODED, $this->qrcodeService->encode(self::STRING_TO_ENCODE));
+        $this->assertEquals(self::STRING_ENCODED, QrCode::encode(self::STRING_TO_ENCODE));
     }
 
 
@@ -50,7 +41,7 @@ class QrCodeServiceTest extends FeatureTestCase
     {
         $file = LocalFile::fake()->validQrcode();
 
-        $this->assertEquals(self::DECODED_IMAGE, $this->qrcodeService->decode($file));
+        $this->assertEquals(self::DECODED_IMAGE, QrCode::decode($file));
     }
 
 
@@ -61,7 +52,7 @@ class QrCodeServiceTest extends FeatureTestCase
     {
         $this->expectException(\App\Exceptions\InvalidQrCodeException::class);
 
-        $this->qrcodeService->decode(LocalFile::fake()->invalidQrcode());
+        QrCode::decode(LocalFile::fake()->invalidQrcode());
     }
 
 }