LoggerMiddleware::handleResponse()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 3
dl 0
loc 6
ccs 4
cts 4
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Buzz\Middleware;
6
7
use Psr\Http\Message\RequestInterface;
8
use Psr\Http\Message\ResponseInterface;
9
use Psr\Log\LoggerInterface;
10
use Psr\Log\NullLogger;
11
12
class LoggerMiddleware implements MiddlewareInterface
13
{
14
    private $logger;
15
16
    private $level;
17
18
    private $prefix;
19
20
    private $startTime;
21
22
    /**
23
     * @param LoggerInterface $logger
24
     * @param string          $level
25
     * @param string|null     $prefix
26
     */
27 1
    public function __construct(LoggerInterface $logger = null, $level = 'info', $prefix = null)
28
    {
29 1
        $this->logger = $logger ?: new NullLogger();
30 1
        $this->level = $level;
31 1
        $this->prefix = $prefix;
32 1
    }
33
34 1
    public function handleRequest(RequestInterface $request, callable $next)
35
    {
36 1
        $this->startTime = microtime(true);
37
38 1
        return $next($request);
39
    }
40
41 1
    public function handleResponse(RequestInterface $request, ResponseInterface $response, callable $next)
42
    {
43 1
        $seconds = microtime(true) - $this->startTime;
44 1
        $this->logger->log($this->level, sprintf('%sSent "%s %s" in %dms', $this->prefix, $request->getMethod(), $request->getUri(), round($seconds * 1000)));
45
46 1
        return $next($request, $response);
47
    }
48
}
49