Failed Conditions
Push — develop ( 859721...8283a1 )
by Denis
33:23
created

RequestCounterListener::onKernelRequestPre()   A

Complexity

Conditions 5
Paths 5

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 8.125

Importance

Changes 0
Metric Value
eloc 10
c 0
b 0
f 0
dl 0
loc 14
ccs 5
cts 10
cp 0.5
rs 9.6111
cc 5
nc 5
nop 1
crap 8.125
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Artprima\PrometheusMetricsBundle\EventListener;
6
7
use Artprima\PrometheusMetricsBundle\Metrics\MetricsGeneratorRegistry;
8
use Psr\Log\LoggerAwareInterface;
9
use Psr\Log\LoggerAwareTrait;
10
use Symfony\Component\HttpKernel\Event\RequestEvent;
11
use Symfony\Component\HttpKernel\Event\TerminateEvent;
12
13
/**
14
 * Class RequestCounterListener.
15
 */
16
class RequestCounterListener implements LoggerAwareInterface
17
{
18
    use LoggerAwareTrait;
19
20
    /**
21
     * @var MetricsGeneratorRegistry
22
     */
23
    private $metricsGenerators;
24
25
    /**
26
     * @var array
27
     */
28
    private $ignoredRoutes;
29
30 30
    public function __construct(MetricsGeneratorRegistry $metricsGenerators, array $ignoredRoutes = ['prometheus_bundle_prometheus'])
31
    {
32 30
        $this->metricsGenerators = $metricsGenerators;
33 30
        $this->ignoredRoutes = $ignoredRoutes;
34 30
    }
35
36 6
    public function onKernelRequestPre(RequestEvent $event): void
37
    {
38 6
        if (!$event->isMasterRequest()) {
39
            return;
40
        }
41
42 6
        foreach ($this->metricsGenerators->getMetricsGenerators() as $generator) {
43
            try {
44 6
                $generator->collectStart($event);
45
            } catch (\Exception $e) {
46
                if ($this->logger) {
47
                    $this->logger->error(
48
                        $e->getMessage(),
49 2
                        ['from' => 'request_collector', 'class' => get_class($generator)]
50
                    );
51
                }
52
            }
53
        }
54 6
    }
55
56 21
    public function onKernelRequest(RequestEvent $event): void
57
    {
58 21
        if (!$event->isMasterRequest()) {
59 3
            return;
60
        }
61
62 18
        $requestRoute = $event->getRequest()->attributes->get('_route');
63 18
        if (in_array($requestRoute, $this->ignoredRoutes, true)) {
64 3
            return;
65
        }
66
67 15
        foreach ($this->metricsGenerators->getMetricsGenerators() as $generator) {
68
            try {
69 15
                $generator->collectRequest($event);
70 6
            } catch (\Exception $e) {
71 6
                if ($this->logger) {
72 3
                    $this->logger->error(
73 3
                        $e->getMessage(),
74 7
                        ['from' => 'request_collector', 'class' => get_class($generator)]
75
                    );
76
                }
77
            }
78
        }
79 15
    }
80
81 15
    public function onKernelTerminate(TerminateEvent $event): void
82
    {
83 15
        $requestRoute = $event->getRequest()->attributes->get('_route');
84 15
        if (in_array($requestRoute, $this->ignoredRoutes, true)) {
85
            return;
86
        }
87
88 15
        foreach ($this->metricsGenerators->getMetricsGenerators() as $generator) {
89
            try {
90 15
                $generator->collectResponse($event);
91 6
            } catch (\Exception $e) {
92 6
                if ($this->logger) {
93 3
                    $this->logger->error(
94 3
                        $e->getMessage(),
95 7
                        ['from' => 'response_collector', 'class' => get_class($generator)]
96
                    );
97
                }
98
            }
99
        }
100 15
    }
101
}
102