Completed
Push — master ( 1f2b71...3f1d1d )
by Matze
07:04
created

Gentime   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 5
dl 0
loc 57
ccs 22
cts 22
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A processResponse() 0 22 1
A getUsername() 0 9 3
1
<?php
2
3
namespace BrainExe\Core\Middleware;
4
5
use BrainExe\Annotations\Annotations\Inject;
6
use BrainExe\Core\Annotations\Middleware;
7
use BrainExe\Core\Authentication\AnonymusUserVO;
8
use BrainExe\Core\Authentication\UserVO;
9
use Monolog\Logger;
10
use Symfony\Component\HttpFoundation\Request;
11
use Symfony\Component\HttpFoundation\Response;
12
13
/**
14
 * @Middleware("Middleware.Gentime")
15
 */
16
class Gentime extends AbstractMiddleware
17
{
18
19
    /**
20
     * @var Logger
21
     */
22
    private $logger;
23
24
    /**
25
     * @Inject("@logger")
26
     * @param Logger $logger
27
     */
28 2
    public function __construct(Logger $logger)
29
    {
30 2
        $this->logger = $logger;
31 2
    }
32
33
    /**
34
     * {@inheritdoc}
35
     */
36 2
    public function processResponse(Request $request, Response $response)
37
    {
38 2
        $startTime = $request->server->get('REQUEST_TIME_FLOAT');
39 2
        $user      = $request->attributes->get('user');
40 2
        $username  = $this->getUsername($user);
41
42 2
        $diff = microtime(true) - $startTime;
43 2
        $this->logger->info(
44
            sprintf(
45 2
                '%0.2fms - %s',
46 2
                $diff * 1000,
47 2
                $request->getRequestUri()
48
            ),
49
            [
50 2
                'channel'  => 'gentime',
51 2
                'time'     => round($diff * 1000, 2),
52 2
                'route'    => $request->attributes->get('_route'),
53 2
                'userName' => $username,
54 2
                'userId'   => $request->attributes->get('user_id')
55
            ]
56
        );
57 2
    }
58
59
    /**
60
     * @param UserVO|null $user
61
     * @return string
62
     */
63 2
    protected function getUsername($user)
64
    {
65 2
        if ($user instanceof UserVO && !$user instanceof AnonymusUserVO) {
66
            /** @var UserVO $user */
67 1
            return $user->getUsername();
68
        } else {
69 1
            return '-anonymous-';
70
        }
71
    }
72
}
73