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

Gentime::processResponse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 15
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 22
ccs 15
cts 15
cp 1
rs 9.2
c 0
b 0
f 0
cc 1
eloc 15
nc 1
nop 2
crap 1
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