Passed
Pull Request — master (#26)
by Stephen
04:07 queued 42s
created

TrackTrafficMiddleware::getTimestamp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Sfneal\Tracking\Middleware;
4
5
use Closure;
6
use Illuminate\Http\RedirectResponse;
7
use Illuminate\Http\Request;
8
use Illuminate\Http\Response;
9
use Sfneal\Tracking\Events\TrackTrafficEvent;
10
11
class TrackTrafficMiddleware
12
{
13
    /**
14
     * Handle an incoming request.
15
     *
16
     * @param Request $request
17
     * @param Closure $next
18
     *
19
     * @return mixed
20
     */
21
    public function handle(Request $request, Closure $next)
22
    {
23
        // Create response
24
        $response = $next($request);
25
26
        // Check if traffic tracking is enabled
27
        if (config('tracking.traffic.track')) {
28
            // Add unique ID to be used to relate traffic & activities
29
            $request->attributes->add(['track_traffic_token' => uniqid()]);
30
31
            // Fire tracking event
32
            $this->track($request, $response);
33
        }
34
35
        // false value signifies that the tracking token was disabled
36
        else {
37
            $request->attributes->add(['track_traffic_token' => false]);
38
        }
39
40
        return $response;
41
    }
42
43
    /**
44
     * Fire the `TrackTrafficEvent`.
45
     *
46
     * @param Request                   $request
47
     * @param Response|RedirectResponse $response
48
     */
49
    private function track(Request $request, $response)
50
    {
51
        // Fire Traffic Tracker event
52
        event(new TrackTrafficEvent($request, $response, microtime(true)));
0 ignored issues
show
Bug introduced by
It seems like $response can also be of type Illuminate\Http\RedirectResponse; however, parameter $response of Sfneal\Tracking\Events\T...ficEvent::__construct() does only seem to accept Illuminate\Http\Response, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

52
        event(new TrackTrafficEvent($request, /** @scrutinizer ignore-type */ $response, microtime(true)));
Loading history...
53
    }
54
}
55