DetectDevice::__invoke()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 3
1
<?php
2
3
namespace Psr7Middlewares\Middleware;
4
5
use Psr7Middlewares\Utils;
6
use Psr\Http\Message\ServerRequestInterface;
7
use Psr\Http\Message\ResponseInterface;
8
use Mobile_Detect;
9
10
/**
11
 * Middleware to detect devices using Mobile_Detect library.
12
 */
13
class DetectDevice
14
{
15
    use Utils\AttributeTrait;
16
17
    const KEY = 'DEVICE';
18
19
    /**
20
     * Returns the device.
21
     *
22
     * @param ServerRequestInterface $request
23
     *
24
     * @return Mobile_Detect|null
25
     */
26
    public static function getDevice(ServerRequestInterface $request)
27
    {
28
        return self::getAttribute($request, self::KEY);
29
    }
30
31
    /**
32
     * Execute the middleware.
33
     *
34
     * @param ServerRequestInterface $request
35
     * @param ResponseInterface      $response
36
     * @param callable               $next
37
     *
38
     * @return ResponseInterface
39
     */
40
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
41
    {
42
        $device = new Mobile_Detect($request->getServerParams());
43
44
        return $next(self::setAttribute($request, self::KEY, $device), $response);
45
    }
46
}
47