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 ( 4a1f30...2946a1 )
by Martin
03:04
created

WhichBrowser   A

Complexity

Total Complexity 20

Size/Duplication

Total Lines 144
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 14

Test Coverage

Coverage 100%

Importance

Changes 18
Bugs 0 Features 0
Metric Value
wmc 20
c 18
b 0
f 0
lcom 1
cbo 14
dl 0
loc 144
ccs 61
cts 61
cp 1
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getName() 0 4 1
A getComposerPackageName() 0 4 1
A getParser() 0 8 2
F parse() 0 112 16
1
<?php
2
namespace UserAgentParser\Provider;
3
4
use UserAgentParser\Exception;
5
use UserAgentParser\Model;
6
use WhichBrowser\Parser as WhichBrowserParser;
7
8
class WhichBrowser extends AbstractProvider
9
{
10
    /**
11
     * Used for unitTests mocking
12
     * @var WhichBrowserParser
13
     */
14
    private $parser;
15
16 1
    public function getName()
17
    {
18 1
        return 'WhichBrowser';
19
    }
20
21 2
    public function getComposerPackageName()
22
    {
23 2
        return 'whichbrowser/parser';
24
    }
25
26
    /**
27
     * @param  array              $headers
28
     * @return WhichBrowserParser
29
     */
30 8
    public function getParser(array $headers)
31
    {
32 8
        if ($this->parser !== null) {
33 7
            return $this->parser;
34
        }
35
36 1
        return new WhichBrowserParser($headers);
37
    }
38
39 7
    public function parse($userAgent, array $headers = [])
40
    {
41 7
        $headers['User-Agent'] = $userAgent;
42
43 7
        $parser = $this->getParser($headers);
44
45
        /*
46
         * No result found?
47
         */
48 7
        if ($parser->isDetected() !== true) {
49 1
            throw new Exception\NoResultFoundException('No result found for user agent: ' . $userAgent);
50
        }
51
52
        /*
53
         * Hydrate the model
54
         */
55 6
        $result = new Model\UserAgent();
56 6
        $result->setProviderResultRaw($parser->toArray());
57
58
        /*
59
         * Bot detection
60
         */
61 6
        if ($parser->getType() === 'bot') {
62 1
            $bot = $result->getBot();
63 1
            $bot->setIsBot(true);
64
65 1
            $name = $parser->browser->getName();
66 1
            if ($name !== '') {
67 1
                $bot->setName($name);
68
            }
69
70 1
            return $result;
71
        }
72
73
        /*
74
         * Browser
75
         */
76 5
        $browser = $result->getBrowser();
77
78 5
        $name = $parser->browser->getName();
79 5
        if ($name !== '') {
80 1
            $browser->setName($name);
81
82 1
            $version = $parser->browser->getVersion();
83 1
            if ($version !== '') {
84 1
                $browser->getVersion()->setComplete($version);
85
            }
86 5
        } elseif (isset($parser->browser->using)) {
87 1
            $name = $parser->browser->using->getName();
88 1
            if ($name !== '') {
89 1
                $browser->setName($name);
90
91 1
                $version = $parser->browser->using->getVersion();
92 1
                if ($version !== '') {
93 1
                    $browser->getVersion()->setComplete($version);
94
                }
95
            }
96
        }
97
98
        /*
99
         * renderingEngine
100
         */
101 5
        $renderingEngine = $result->getRenderingEngine();
102
103 5
        $name = $parser->engine->getName();
104 5
        if ($name !== '') {
105 1
            $renderingEngine->setName($name);
106
        }
107
108 5
        $version = $parser->engine->getVersion();
109 5
        if ($version !== '') {
110 1
            $renderingEngine->getVersion()->setComplete($version);
111
        }
112
113
        /*
114
         * operatingSystem
115
         */
116 5
        $operatingSystem = $result->getOperatingSystem();
117
118 5
        $name = $parser->os->getName();
119 5
        if ($name !== '') {
120 1
            $operatingSystem->setName($name);
121
        }
122
123 5
        $version = $parser->os->getVersion();
124 5
        if ($version !== '') {
125 1
            $operatingSystem->getVersion()->setComplete($version);
126
        }
127
128
        /*
129
         * device
130
         */
131 5
        $device = $result->getDevice();
132
133 5
        $model = $parser->device->getModel();
134 5
        if ($model !== '') {
135 1
            $device->setModel($model);
136
        }
137
138 5
        $brand = $parser->device->getManufacturer();
139 5
        if ($brand !== '') {
140 1
            $device->setBrand($brand);
141
        }
142
143 5
        $device->setType($parser->getType());
144
145 5
        if ($parser->isType('mobile', 'tablet', 'ereader', 'media', 'watch', 'camera', 'gaming:portable') === true) {
146 1
            $device->setIsMobile(true);
147
        }
148
149 5
        return $result;
150
    }
151
}
152