UserAgentTracker   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 5
dl 0
loc 66
rs 10
c 0
b 0
f 0
ccs 14
cts 14
cp 1

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getModel() 0 4 1
A getUserAgentParser() 0 4 1
A track() 0 7 1
A prepareData() 0 10 2
1
<?php namespace Arcanedev\LaravelTracker\Trackers;
2
3
use Arcanedev\LaravelTracker\Contracts\Parsers\UserAgentParser;
4
use Arcanedev\LaravelTracker\Contracts\Trackers\UserAgentTracker as UserAgentTrackerContract;
5
use Arcanedev\LaravelTracker\Support\BindingManager;
6
7
/**
8
 * Class     UserAgentTracker
9
 *
10
 * @package  Arcanedev\LaravelTracker\Trackers
11
 * @author   ARCANEDEV <[email protected]>
12
 */
13
class UserAgentTracker extends AbstractTracker implements UserAgentTrackerContract
14
{
15
    /* -----------------------------------------------------------------
16
     |  Getters and Setters
17
     | -----------------------------------------------------------------
18
     */
19
20
    /**
21
     * Get the model.
22
     *
23
     * @return \Arcanedev\LaravelTracker\Models\Agent
24
     */
25 9
    protected function getModel()
26
    {
27 9
        return $this->makeModel(BindingManager::MODEL_AGENT);
28
    }
29
30
    /**
31
     * Get the user agent parser.
32
     *
33
     * @return \Arcanedev\LaravelTracker\Contracts\Parsers\UserAgentParser
34
     */
35 12
    public function getUserAgentParser()
36
    {
37 12
        return $this->make(UserAgentParser::class);
38
    }
39
40
    /* -----------------------------------------------------------------
41
     |  Main Methods
42
     | -----------------------------------------------------------------
43
     */
44
45
    /**
46
     * Track the user agent.
47
     *
48
     * @return int
49
     */
50 9
    public function track()
51
    {
52 9
        return $this->getModel()
53 9
            ->newQuery()
54 9
            ->firstOrCreate($this->prepareData())
55 9
            ->getKey();
56
    }
57
58
    /* -----------------------------------------------------------------
59
     |  Other Methods
60
     | -----------------------------------------------------------------
61
     */
62
63
    /**
64
     * Prepare the data.
65
     *
66
     * @return array
67
     */
68 9
    private function prepareData()
69
    {
70 9
        $parser = $this->getUserAgentParser();
71
72
        return [
73 9
            'name'            => $parser->getOriginalUserAgent() ?: 'Other',
74 9
            'browser'         => $parser->getBrowser(),
75 9
            'browser_version' => $parser->getUserAgentVersion(),
76
        ];
77
    }
78
}
79