Passed
Push — master ( 6b0e6b...43789e )
by Stephen
03:30
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
        // Add unique ID to be used to relate traffic & activities
24
        $request->attributes->add(['track_traffic_token' => uniqid()]);
25
26
        $response = $next($request);
27
28
        if (env('TRACK_TRAFFIC') == true) {
29
            $this->track($request, $response);
30
        } else {
31
            $request->attributes->add(['track_traffic_token' => null]);
32
        }
33
34
        return $response;
35
    }
36
37
    /**
38
     * @param Request                   $request
39
     * @param Response|RedirectResponse $response
40
     */
41
    private function track(Request $request, $response)
42
    {
43
        // Fire Traffic Tracker event
44
        event(new TrackTrafficEvent(
45
            $request,
46
            $response,
47
            $this->getTimestamp()
48
        ));
49
    }
50
51
    /**
52
     * @return string
53
     */
54
    private function getTimestamp()
55
    {
56
        return microtime(true);
57
    }
58
}
59