ModifiesUrlRequestData::handle()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 20
rs 9.6
c 0
b 0
f 0
ccs 9
cts 9
cp 1
cc 3
nc 3
nop 2
crap 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MuhamedDidovic\Shortener\Middleware;
6
7
use Closure;
8
use Illuminate\Support\Facades\Validator;
9
10
class ModifiesUrlRequestData
11
{
12
    /**
13
     * Handle an incoming request.
14
     *
15
     * @param  \Illuminate\Http\Request  $request
16
     * @param  \Closure  $next
17
     * @return mixed
18
     */
19 17
    public function handle($request, Closure $next)
20
    {
21 17
        if (! $request->has('url')) {
22 7
            return $next($request);
23
        }
24
25 10
        $validator = Validator::make($request->only('url'), [
26
            'url' => [
27 10
                'regex:#((https?|ftp)://(\S*?\.\S*?))([\s)\[\]{},;"\':<]|\.\s|$)#i',
28
            ],
29
        ]);
30
31 10
        if ($validator->fails()) {
32 3
            $request->merge([
33 3
                'url' => 'http://'.$request->url,
34
            ]);
35
        }
36
37 10
        return $next($request);
38
    }
39
}
40