SetEtag   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

Changes 4
Bugs 2 Features 0
Metric Value
eloc 10
c 4
b 2
f 0
dl 0
loc 31
rs 10
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A handle() 0 20 2
1
<?php
2
3
namespace Werk365\EtagConditionals\Middleware;
4
5
use Closure;
6
use Illuminate\Http\Request;
7
use Werk365\EtagConditionals\EtagConditionals;
8
9
class SetEtag extends Middleware
10
{
11
    public string $middleware = 'setEtag';
12
13
    /**
14
     * Handle an incoming request.
15
     *
16
     * @param  \Illuminate\Http\Request  $request
17
     * @param  \Closure  $next
18
     * @return mixed
19
     */
20
    public function handle(Request $request, Closure $next)
21
    {
22
        // Handle request
23
        $method = $request->getMethod();
24
25
        // Support using HEAD method for checking If-None-Match
26
        if ($request->isMethod('HEAD')) {
27
            $request->setMethod('GET');
28
        }
29
30
        // Handle response
31
        $response = $next($request);
32
33
        // Setting etag
34
        $etag = EtagConditionals::getEtag($request, $response);
35
        $response->setEtag($etag);
36
37
        $request->setMethod($method);
38
39
        return $response;
40
    }
41
}
42