GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 0994ac...8bf298 )
by Martin
04:01
created

SinergiBrowserDetector::isRealResult()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 12
ccs 6
cts 6
cp 1
rs 9.2
cc 4
eloc 6
nc 3
nop 1
crap 4
1
<?php
2
namespace UserAgentParser\Provider;
3
4
use Sinergi\BrowserDetector;
5
use UserAgentParser\Exception;
6
use UserAgentParser\Model;
7
8
class SinergiBrowserDetector extends AbstractProvider
9
{
10
    protected $defaultValues = [
11
        BrowserDetector\Browser::UNKNOWN,
12
    ];
13
14
    /**
15
     * Used for unitTests mocking
16
     *
17
     * @var BrowserDetector\Browser
18
     */
19
    private $browserParser;
20
21
    /**
22
     * Used for unitTests mocking
23
     *
24
     * @var BrowserDetector\Os
25
     */
26
    private $osParser;
27
28
    /**
29
     * Used for unitTests mocking
30
     *
31
     * @var BrowserDetector\Device
32
     */
33
    private $deviceParser;
34
35 1
    public function getName()
36
    {
37 1
        return 'SinergiBrowserDetector';
38
    }
39
40 2
    public function getComposerPackageName()
41
    {
42 2
        return 'sinergi/browser-detector';
43
    }
44
45
    /**
46
     *
47
     * @param  string                  $userAgent
48
     * @return BrowserDetector\Browser
49
     */
50 6
    public function getBrowserParser($userAgent)
51
    {
52 6
        if ($this->browserParser !== null) {
53 5
            return $this->browserParser;
54
        }
55
56 1
        return new BrowserDetector\Browser($userAgent);
57
    }
58
59
    /**
60
     *
61
     * @param  string             $userAgent
62
     * @return BrowserDetector\Os
63
     */
64 6
    public function getOperatingSystemParser($userAgent)
65
    {
66 6
        if ($this->osParser !== null) {
67 5
            return $this->osParser;
68
        }
69
70 1
        return new BrowserDetector\Os($userAgent);
71
    }
72
73
    /**
74
     *
75
     * @param  string                 $userAgent
76
     * @return BrowserDetector\Device
77
     */
78 6
    public function getDeviceParser($userAgent)
79
    {
80 6
        if ($this->deviceParser !== null) {
81 5
            return $this->deviceParser;
82
        }
83
84 1
        return new BrowserDetector\Device($userAgent);
85
    }
86
87
    /**
88
     *
89
     * @param BrowserDetector\Browser $browserRaw
90
     * @param BrowserDetector\Os      $osRaw
91
     * @param BrowserDetector\Device  $deviceRaw
92
     *
93
     * @return boolean
94
     */
95 5
    private function hasResult(BrowserDetector\Browser $browserRaw, BrowserDetector\Os $osRaw, BrowserDetector\Device $deviceRaw)
96
    {
97 5
        if ($this->isRealResult($browserRaw->getName())) {
98 1
            return true;
99
        }
100
101 4
        if ($this->isRealResult($osRaw->getName())) {
102 1
            return true;
103
        }
104
105 3
        if ($this->isRealResult($deviceRaw->getName())) {
106 1
            return true;
107
        }
108
109 2
        if ($browserRaw->isRobot() === true) {
110 1
            return true;
111
        }
112
113 1
        return false;
114
    }
115
116 5
    public function parse($userAgent, array $headers = [])
117
    {
118 5
        $browserRaw = $this->getBrowserParser($userAgent);
119 5
        $osRaw      = $this->getOperatingSystemParser($userAgent);
120 5
        $deviceRaw  = $this->getDeviceParser($userAgent);
121
122
        /*
123
         * No result found?
124
         */
125 5
        if ($this->hasResult($browserRaw, $osRaw, $deviceRaw) !== true) {
126 1
            throw new Exception\NoResultFoundException('No result found for user agent: ' . $userAgent);
127
        }
128
129
        /*
130
         * Hydrate the model
131
         */
132 4
        $result = new Model\UserAgent();
133 4
        $result->setProviderResultRaw([
134 4
            'browser'         => $browserRaw,
135 4
            'operatingSystem' => $osRaw,
136 4
            'device'          => $deviceRaw,
137 4
        ]);
138
139
        /*
140
         * Bot detection
141
         */
142 4
        if ($browserRaw->isRobot() === true) {
143 1
            $bot = $result->getBot();
144 1
            $bot->setIsBot(true);
145
146 1
            return $result;
147
        }
148
149
        /*
150
         * Browser
151
         */
152 3
        $browser = $result->getBrowser();
153
154 3
        if ($this->isRealResult($browserRaw->getName()) === true) {
155 1
            $browser->setName($browserRaw->getName());
156
        }
157
158 3
        if ($this->isRealResult($browserRaw->getVersion()) === true) {
159 1
            $browser->getVersion()->setComplete($browserRaw->getVersion());
160
        }
161
162
        /*
163
         * operatingSystem
164
         */
165 3
        $operatingSystem = $result->getOperatingSystem();
166
167 3
        if ($this->isRealResult($osRaw->getName()) === true) {
168 1
            $operatingSystem->setName($osRaw->getName());
169
        }
170
171 3
        if ($this->isRealResult($osRaw->getVersion()) === true) {
172 1
            $operatingSystem->getVersion()->setComplete($osRaw->getVersion());
173
        }
174
175
        /*
176
         * device
177
         */
178 3
        $device = $result->getDevice();
179
180 3
        if ($this->isRealResult($deviceRaw->getName()) === true) {
181 1
            $device->setModel($deviceRaw->getName());
182
        }
183
184 3
        if ($osRaw->isMobile() === true) {
185 1
            $device->setIsMobile(true);
186
        }
187
188 3
        return $result;
189
    }
190
}
191