Passed
Branch main (b90ec4)
by Thierry
20:23 queued 14:04
created

SiakExtServiceProvider   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 29
rs 10
c 0
b 0
f 0
wmc 2
1
<?php
2
3
namespace App\Providers;
4
5
use HeadlessChromium\BrowserFactory;
6
use HeadlessChromium\Browser;
7
use Illuminate\Contracts\Support\DeferrableProvider;
8
use Illuminate\Support\ServiceProvider;
9
use Siak\Tontine\Service\Report\Pdf\PdfGeneratorInterface;
10
use Siak\Tontine\Service\Report\Pdf\LocalPdfGenerator;
11
12
use function config;
13
14
class SiakExtServiceProvider extends ServiceProvider implements DeferrableProvider
15
{
16
    /**
17
     * Register any application services
18
     *
19
     * @return void
20
     */
21
    public function register()
22
    {
23
        $this->app->singleton(Browser::class, function() {
24
            $browserFactory = new BrowserFactory(config('chrome.binary'));
25
            // Starts headless chrome
26
            return $browserFactory->createBrowser(config('chrome.browser', []));
27
        });
28
29
        $this->app->bind(PdfGeneratorInterface::class, LocalPdfGenerator::class);
30
        $this->app->singleton(LocalPdfGenerator::class, function($app) {
31
            return new LocalPdfGenerator($app->make(Browser::class));
32
        });
33
    }
34
35
    /**
36
     * Get the services provided by the provider.
37
     *
38
     * @return array
39
     */
40
    public function provides()
41
    {
42
        return [PdfGeneratorInterface::class];
43
    }
44
}
45