LaravelAmplitudeServiceProvider   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 8
dl 0
loc 43
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A boot() 0 6 1
A register() 0 27 1
1
<?php
2
3
namespace LaravelAmplitude\Providers;
4
5
use Illuminate\Console\Events\CommandFinished;
6
use Illuminate\Events\Dispatcher;
7
use Illuminate\Foundation\Http\Events\RequestHandled;
8
use Illuminate\Support\ServiceProvider;
9
use LaravelAmplitude\Amplitude;
10
use LaravelAmplitude\AmplitudeFactory;
11
use LaravelAmplitude\Drivers\AmplitudeDriver;
12
use LaravelAmplitude\Drivers\LogDriver;
13
use LaravelAmplitude\Drivers\NullDriver;
14
use LaravelAmplitude\Events\SendQueuedEvents;
15
16
class LaravelAmplitudeServiceProvider extends ServiceProvider
17
{
18
    /**
19
     * Bootstrap the application services.
20
     */
21
    public function boot()
22
    {
23
        $this->publishes([
24
            __DIR__ . '/../../config/amplitude.php' => config_path('amplitude.php'),
25
        ]);
26
    }
27
28
    /**
29
     * Register the application services.
30
     */
31
    public function register()
32
    {
33
        $this->app->singleton(Amplitude::class, function () {
34
            $amplitudeDriver = new AmplitudeDriver(\Zumba\Amplitude\Amplitude::getInstance());
35
            $amplitudeDriver->init(config('amplitude.api_key'));
36
37
            $factory = new AmplitudeFactory([
38
                $amplitudeDriver,
39
                $this->app->make(LogDriver::class),
40
                $this->app->make(NullDriver::class)
41
            ]);
42
43
            return $factory->makeFor(config('amplitude.driver'));
44
        });
45
46
        /** @var Dispatcher $eventDispatcher */
47
        $eventDispatcher = app()->make(Dispatcher::class);
48
        $eventDispatcher->listen(SendQueuedEvents::class, function() {
49
            /** @var Amplitude $amplitude */
50
            $amplitude = app()->make(Amplitude::class);
51
            $amplitude->sendQueuedEvents();
52
        });
53
54
        $eventDispatcher->listen([RequestHandled::class, CommandFinished::class], function() {
55
            event(new SendQueuedEvents());
56
        });
57
    }
58
}
59