Completed
Push — master ( d28e89...39df72 )
by Sam
03:37
created

NewRelicMiddleware::getTransactionName()   B

Complexity

Conditions 6
Paths 4

Size

Total Lines 16
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 16
rs 8.8571
cc 6
eloc 8
nc 4
nop 1
1
<?php
2
3
namespace Nord\Lumen\NewRelic;
4
5
use Closure;
6
use Illuminate\Http\Request;
7
use Intouch\Newrelic\Newrelic;
8
9
/**
10
 * Class NewRelicMiddleware
11
 * @package Nord\Lumen\NewRelic
12
 */
13
class NewRelicMiddleware
14
{
15
16
    /**
17
     * @var Newrelic
18
     */
19
    protected $newRelic;
20
21
22
    /**
23
     * NewRelicMiddleware constructor.
24
     *
25
     * @param Newrelic $newRelic
26
     */
27
    public function __construct(Newrelic $newRelic)
28
    {
29
        $this->newRelic = $newRelic;
30
    }
31
32
33
    /**
34
     * Handles the request by naming the transaction for New Relic
35
     *
36
     * @param Request $request
37
     * @param Closure $next
38
     */
39
    public function handle(Request $request, Closure $next)
40
    {
41
        // We must let the response get handled before naming the transaction, otherwise the necessary route i
42
        // information won't be available in the request object.
43
        $response = $next($request);
44
45
        $this->newRelic->nameTransaction($this->getTransactionName($request));
46
47
        return $response;
48
    }
49
50
51
    /**
52
     * Builds the transaction name. It will return the assigned controller action first, then the route name before
53
     * falling back to just "index.php"
54
     *
55
     * @param Request $request
56
     *
57
     * @return string
58
     */
59
    public function getTransactionName(Request $request)
60
    {
61
        $route = $request->route();
62
63
        if (is_array($route)) {
64
            // Try the assigned controller action
65
            if (isset($route[1]) && isset($route[1]['uses'])) {
66
                return $route[1]['uses'];
67
            } // Try named routes
68
            elseif (isset($route[1]) && isset($route[1]['as'])) {
69
                return $route[1]['as'];
70
            }
71
        }
72
73
        return 'index.php';
74
    }
75
76
}
77