WakatimeServiceProvider::boot()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 0
1
<?php
2
3
namespace Kallencode\Wakatime;
4
5
use Illuminate\Support\ServiceProvider;
6
use Kallencode\Wakatime\Exceptions\InvalidConfiguration;
7
8
class WakatimeServiceProvider extends ServiceProvider
9
{
10
    /**
11
     * Bootstrap the application services.
12
     */
13
    public function boot()
14
    {
15
        if ($this->app->runningInConsole()) {
16
            $this->publishes([
17
                __DIR__.'/../config/laravel-wakatime.php' =>
18
                    config_path('laravel-wakatime.php'),
19
            ], 'config');
20
        }
21
    }
22
23
    /**
24
     * Register the service provider.
25
     */
26
    public function register()
27
    {
28
        $config = config('laravel-wakatime');
29
30
        $this->app->bind(WakatimeClient::class, function() use ($config) {
31
            return WakatimeClientFactory::createForConfig($config);
32
        });
33
34
        $this->app->bind(Wakatime::class, function() use ($config) {
35
            $this->guardAgainstInvalidConfig($config);
36
            $client = app(WakatimeClient::class);
37
38
            return new Wakatime($client);
39
        });
40
41
        $this->app->alias(Wakatime::class, 'laravel-wakatime');
42
    }
43
44
    /**
45
     * @param  array|null $config
46
     *
47
     * @throws \Kallencode\Wakatime\Exceptions\InvalidConfiguration
48
     */
49
    public function guardAgainstInvalidConfig($config)
50
    {
51
        if(empty($config['apiKey'])) {
52
            throw InvalidConfiguration::apiKeyNotSpecified();
53
        }
54
        if(empty($config['baseUrl'])) {
55
            throw InvalidConfiguration::baseUrlNotSpecified();
56
        }
57
    }
58
59
60
}
61