Completed
Push — master ( 6f1f11...46af25 )
by Gaël
01:59
created

NewsletterServiceProvider   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
dl 0
loc 41
c 0
b 0
f 0
wmc 6
lcom 1
cbo 6
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A boot() 0 8 1
A register() 0 27 5
1
<?php
2
3
namespace DansMaCulotte\Newsletter;
4
5
use DansMaCulotte\Newsletter\Drivers\MailjetDriver;
6
use Illuminate\Support\ServiceProvider;
7
use DansMaCulotte\Newsletter\Drivers\MailchimpDriver;
8
use DansMaCulotte\Newsletter\Drivers\NullDriver;
9
10
class NewsletterServiceProvider extends ServiceProvider
11
{
12
    protected $defer = false;
13
14
    public function boot()
15
    {
16
        $this->mergeConfigFrom(__DIR__.'/../config/newsletter.php', 'newsletter');
17
18
        $this->publishes([
19
            __DIR__.'/../config/newsletter.php' => config_path('newsletter.php'),
20
        ]);
21
    }
22
23
    public function register()
24
    {
25
        $this->app->singleton(Newsletter::class, function () {
26
            $driver = config('newsletter.driver', null);
27
            if (is_null($driver) || $driver === 'log') {
28
                return new NullDriver($driver === 'log');
29
            }
30
31
            $config = [
32
                'defaultList' => config('newsletter.defaultList'),
33
                'lists' => config('newsletter.lists'),
34
            ];
35
36
            switch ($driver) {
37
                case 'mailchimp':
38
                    $driver = new MailchimpDriver(config('newsletter.mailchimp'), $config);
39
                    break;
40
                case 'mailjet':
41
                    $driver = new MailjetDriver(config('newsletter.mailjet'), $config);
42
                    break;
43
            }
44
45
            return new Newsletter($driver);
46
        });
47
48
        $this->app->alias(Newsletter::class, 'newsletter');
49
    }
50
}
51