Completed
Push — master ( f76772...1672bb )
by ARCANEDEV
07:47
created

UserAgentTracker::prepareData()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 5
cts 5
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 5
nc 2
nop 0
crap 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\Models\Agent;
6
7
/**
8
 * Class     UserAgentTracker
9
 *
10
 * @package  Arcanedev\LaravelTracker\Trackers
11
 * @author   ARCANEDEV <[email protected]>
12
 */
13
class UserAgentTracker implements UserAgentTrackerContract
14
{
15
    /* ------------------------------------------------------------------------------------------------
16
     |  Properties
17
     | ------------------------------------------------------------------------------------------------
18
     */
19
    /** @var \Arcanedev\LaravelTracker\Contracts\Parsers\UserAgentParser */
20
    protected $userAgentParser;
21
22
    /* ------------------------------------------------------------------------------------------------
23
     |  Constructor
24
     | ------------------------------------------------------------------------------------------------
25
     */
26
    /**
27
     * UserAgentTracker constructor.
28
     *
29
     * @param  \Arcanedev\LaravelTracker\Contracts\Parsers\UserAgentParser  $userAgentParser
30
     */
31 24
    public function __construct(UserAgentParser $userAgentParser)
32
    {
33 24
        $this->userAgentParser = $userAgentParser;
34 24
    }
35
36
    /* ------------------------------------------------------------------------------------------------
37
     |  Getters & Setters
38
     | ------------------------------------------------------------------------------------------------
39
     */
40
    /**
41
     * Get the user agent parser.
42
     *
43
     * @return \Arcanedev\LaravelTracker\Contracts\Parsers\UserAgentParser
44
     */
45 6
    public function getUserAgentParser()
46
    {
47 6
        return $this->userAgentParser;
48
    }
49
50
    /* ------------------------------------------------------------------------------------------------
51
     |  Main Functions
52
     | ------------------------------------------------------------------------------------------------
53
     */
54
    /**
55
     * Track the user agent.
56
     *
57
     * @return int
58
     */
59 6
    public function track()
60
    {
61 6
        return Agent::firstOrCreate($data = $this->prepareData(), $data)->id;
62
    }
63
64
    /* ------------------------------------------------------------------------------------------------
65
     |  Other Functions
66
     | ------------------------------------------------------------------------------------------------
67
     */
68
    /**
69
     * Prepare the data.
70
     *
71
     * @return array
72
     */
73 6
    private function prepareData()
74
    {
75
        return [
76 6
            'name'            => $this->userAgentParser->getOriginalUserAgent() ?: 'Other',
77 6
            'browser'         => $this->userAgentParser->getBrowser(),
78 6
            'browser_version' => $this->userAgentParser->getUserAgentVersion(),
79 3
        ];
80
    }
81
}
82