ResponseTimeMiddleware   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 18
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 8
dl 0
loc 18
rs 10
c 0
b 0
f 0
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 9 2
1
<?php
2
3
namespace example\components;
4
5
use Psr\Http\Message\ResponseInterface;
6
use Psr\Http\Message\ServerRequestInterface;
7
use Psr\Http\Server\MiddlewareInterface;
8
use Psr\Http\Server\RequestHandlerInterface;
9
10
class ResponseTimeMiddleware implements MiddlewareInterface
11
{
12
    const HEADER = 'X-Response-Time';
13
14
    /**
15
     * @param ServerRequestInterface $request
16
     * @param RequestHandlerInterface $handler
17
     * @return ResponseInterface
18
     */
19
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
20
    {
21
        $server = $request->getServerParams();
22
        if (!isset($server['REQUEST_TIME_FLOAT'])) {
23
            $server['REQUEST_TIME_FLOAT'] = microtime(true);
24
        }
25
        $response = $handler->handle($request);
26
        $time = (microtime(true) - $server['REQUEST_TIME_FLOAT']) * 1000;
27
        return $response->withHeader(self::HEADER, sprintf('%2.3fms', $time));
28
    }
29
}
30