Logger   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 3
dl 0
loc 56
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
B __invoke() 0 30 6
1
<?php
2
3
namespace App\Middleware;
4
5
use Psr\Http\Message\ServerRequestInterface;
6
use Psr\Http\Message\ResponseInterface;
7
8
class Logger
9
{
10
    /**
11
     * @var \Monolog\Logger
12
     */
13
    private $logger;
14
15
    /**
16
     * Logger constructor.
17
     * @param \Monolog\Logger $logger
18
     */
19
    public function __construct(\Monolog\Logger $logger)
20
    {
21
        $this->logger = $logger;
22
    }
23
24
    /**
25
     * Execute the middleware.
26
     *
27
     * @param ServerRequestInterface $request
28
     * @param ResponseInterface      $response
29
     * @param callable               $next
30
     *
31
     * @return ResponseInterface
32
     */
33
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
34
    {
35
        $logger     = $this->logger;
36
        $response   = $next($request, $response);
37
        $statusCode = $response->getStatusCode();
38
        $log        = [
39
            'ip'     => $request->getAttribute('ip_address'),
40
            'uri'    => $request->getUri()->getPath(),
41
            'status' => $statusCode,
42
        ];
43
44
        switch ($statusCode) {
45
            case 500:
46
                $logger->addCritical('Oops!!! the server got 500 error', $log);
47
                break;
48
            case 405:
49
            case 404:
50
                $logger->addWarning('Someone calling un-existing API action', $log);
51
                break;
52
            case 403:
53
            case 401:
54
                $logger->addWarning('Someone calling API action without access', $log);
55
                break;
56
            default:
57
                $logger->addInfo('Someone calling existing API action', $log);
58
                break;
59
        }
60
61
        return $response;
62
    }
63
}
64