Issues (5)

src/InfluxDbServiceProvider.php (2 issues)

1
<?php
2
/**
3
 * src/InfluxDbServiceProvider.php.
4
 *
5
 * @author      Austin Heap <[email protected]>
6
 * @version     v0.1.7
7
 */
8
declare(strict_types=1);
9
10
namespace AustinHeap\Database\InfluxDb;
11
12
use Monolog\Logger;
13
use Illuminate\Log\Writer;
14
use Illuminate\Support\Facades\Log;
15
use InfluxDB\Client as InfluxClient;
16
use Illuminate\Support\ServiceProvider;
17
use AustinHeap\Database\InfluxDb\Logs\Formatter;
18
use InfluxDB\Client\Exception as ClientException;
19
use AustinHeap\Database\InfluxDb\Logs\MonologHandler;
20
21
/**
22
 * Class InfluxDbServiceProvider.
23
 */
24
class InfluxDbServiceProvider extends ServiceProvider
25
{
26
    /**
27
     * @return void
28
     */
29
    public function boot(): void
30
    {
31
        $this->publishes([
32
                             __DIR__.'/config/influxdb.php' => config_path('influxdb.php'),
33
                         ]);
34
35
        $this->mergeConfigFrom(__DIR__.'/config/influxdb.php', 'influxdb');
36
37
        if (config('influxdb.log.monolog', false) === true) {
38
            $handler = new MonologHandler($this->getLoggingLevel());
0 ignored issues
show
It seems like $this->getLoggingLevel() can also be of type string; however, parameter $level of AustinHeap\Database\Infl...gHandler::__construct() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

38
            $handler = new MonologHandler(/** @scrutinizer ignore-type */ $this->getLoggingLevel());
Loading history...
39
            $handler->setFormatter(new Formatter());
40
41
            $monolog = Log::getMonolog();
42
            $monolog->pushHandler($handler);
43
44
            $new_log = new Writer($monolog, Log::getEventDispatcher());
45
            Log::swap($new_log);
46
        }
47
    }
48
49
    /**
50
     * @return void
51
     */
52
    public function register(): void
53
    {
54
        $this->app->singleton('InfluxDb', function ($app) {
0 ignored issues
show
The parameter $app is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

54
        $this->app->singleton('InfluxDb', function (/** @scrutinizer ignore-unused */ $app) {

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
55
            try {
56
                $timeout = is_int(config('influxdb.timeout', null)) ? config('influxdb.timeout') : 5;
57
                $verifySsl = is_bool(config('influxdb.verify_ssl', null)) ? config('influxdb.verify_ssl') : true;
58
                $protocol = 'influxdb';
59
60
                if (in_array(config('influxdb.protocol'), ['https', 'udp'])) {
61
                    $protocol = config('influxdb.protocol').'+'.$protocol;
62
                }
63
64
                $dsn = sprintf('%s://%s:%s@%s:%s/%s',
65
                               $protocol,
66
                               config('influxdb.user'),
67
                               config('influxdb.pass'),
68
                               config('influxdb.host'),
69
                               config('influxdb.port'),
70
                               config('influxdb.database')
71
                );
72
73
                return InfluxClient::fromDSN($dsn, $timeout, $verifySsl);
74
            } catch (ClientException $exception) {
75
                throw $exception;
76
            }
77
        });
78
    }
79
80
    /**
81
     * @return \Illuminate\Config\Repository|int|mixed|string
82
     */
83
    private function getLoggingLevel()
84
    {
85
        $level = config('influxdb.log.level', 'DEBUG');
86
        $level = empty($level) ? 'DEBUG' : $level;
87
88
        return in_array($level, [
89
            'DEBUG',
90
            'INFO',
91
            'NOTICE',
92
            'WARNING',
93
            'ERROR',
94
            'CRITICAL',
95
            'ALERT',
96
            'EMERGENCY',
97
        ]) ? $level : Logger::DEBUG;
98
    }
99
100
    /**
101
     * @return \InfluxDB\Client|\InfluxDB\Database
102
     */
103
    public static function getInstance()
104
    {
105
        return app('InfluxDb');
106
    }
107
}
108