RedirectsOldUrls   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 85
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 2
dl 0
loc 85
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A handle() 0 10 2
A shouldRedirectResponse() 0 11 3
A getRedirectResponse() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Arcanedev\MissingUrlsRedirector\Middleware;
6
7
use Arcanedev\MissingUrlsRedirector\Contracts\RedirectorManager;
8
use Closure;
9
use Illuminate\Http\Request;
10
11
/**
12
 * Class     RedirectRequests
13
 *
14
 * @package  Arcanedev\MissingUrlsRedirector\Middleware
15
 * @author   ARCANEDEV <[email protected]>
16
 */
17
class RedirectsOldUrls
18
{
19
    /* -----------------------------------------------------------------
20
     |  Properties
21
     | -----------------------------------------------------------------
22
     */
23
24
    /** @var  \Arcanedev\MissingUrlsRedirector\Contracts\RedirectorManager */
25
    protected $manager;
26
27
    /* -----------------------------------------------------------------
28
     |  Constructor
29
     | -----------------------------------------------------------------
30
     */
31
32
    /**
33
     * RedirectsOldUrls constructor.
34
     *
35
     * @param  \Arcanedev\MissingUrlsRedirector\Contracts\RedirectorManager  $manager
36
     */
37 90
    public function __construct(RedirectorManager $manager)
38
    {
39 90
        $this->manager = $manager;
40 90
    }
41
42
    /* -----------------------------------------------------------------
43
     |  Main Methods
44
     | -----------------------------------------------------------------
45
     */
46
47
    /**
48
     * Handle the request.
49
     *
50
     * @param  \Illuminate\Http\Request  $request
51
     * @param  \Closure                  $next
52
     *
53
     * @return mixed
54
     */
55 90
    public function handle(Request $request, Closure $next)
56
    {
57 90
        $response = $next($request);
58
59 90
        if ($this->shouldRedirectResponse($response)) {
60 66
            $redirectedResponse = $this->getRedirectResponse($request);
61
        }
62
63 90
        return $redirectedResponse ?? $response;
64
    }
65
66
    /* -----------------------------------------------------------------
67
     |  Other Methods
68
     | -----------------------------------------------------------------
69
     */
70
71
    /**
72
     * Should redirect missing response.
73
     *
74
     * @param  \Illuminate\Http\Response  $response
75
     *
76
     * @return bool
77
     */
78 90
    protected function shouldRedirectResponse($response): bool
79
    {
80 90
        $redirectedStatusCodes = $this->manager->getRedirectedStatusCodes();
81
82 90
        if (empty($redirectedStatusCodes)) {
83 6
            return false;
84
        }
85
86 84
        return in_array('*', $redirectedStatusCodes)
87 84
            || in_array($response->getStatusCode(), $redirectedStatusCodes);
88
    }
89
90
    /**
91
     * Get the redirect response.
92
     *
93
     * @param  \Illuminate\Http\Request  $request
94
     *
95
     * @return \Illuminate\Http\Response|null
96
     */
97 66
    protected function getRedirectResponse(Request $request)
98
    {
99 66
        return $this->manager->getRedirectionFor($request);
100
    }
101
}
102