SetEtag::handle()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 20
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
cc 2
eloc 8
c 3
b 1
f 0
nc 2
nop 2
dl 0
loc 20
rs 10
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