mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-02 01:52:10 +09:00
Add more edge cases and tests, always default to Mozilla/X.X
This commit is contained in:
parent
2086c73295
commit
976fa799f3
2 changed files with 63 additions and 1 deletions
|
|
@ -228,7 +228,7 @@ class UA
|
|||
$result->version = ($matches[1] + 4) . '.0';
|
||||
return $result;
|
||||
}
|
||||
if (preg_match('#(MSIE|OPR|CriOS|Firefox|FxiOS|Iceweasel|Yeti|[a-z]+bot(?:-Image)?)[ /:]([0-9]+\\.[0-9]+)#i', $ua, $matches))
|
||||
if (preg_match('#(MSIE|OPR|CriOS|Firefox|FxiOS|Iceweasel|Yeti|[a-z]+(?:bot|spider)(?:-Image)?|wget|curl)[ /:]([0-9]+\\.[0-9]+)#i', $ua, $matches))
|
||||
{
|
||||
if ($matches[1] === 'MSIE')
|
||||
{
|
||||
|
|
@ -284,6 +284,24 @@ class UA
|
|||
$result->version = $matches[1];
|
||||
return $result;
|
||||
}
|
||||
if (preg_match('#\\bPHP(/[0-9]+\\.[0-9]+)?#', $ua, $matches))
|
||||
{
|
||||
$result->browser = 'PHP';
|
||||
$result->version = (isset($matches[1]) && $matches[1]) ? substr($matches[1], 1) : null;
|
||||
return $result;
|
||||
}
|
||||
if (preg_match('#^Mozilla/([0-9]+\\.[0-9]+)#', $ua, $matches))
|
||||
{
|
||||
$result->browser = 'Mozilla';
|
||||
$result->version = $matches[1];
|
||||
return $result;
|
||||
}
|
||||
if (preg_match('#^([a-zA-Z0-9_-]+)/([0-9]+\\.[0-9]+)#', $ua, $matches))
|
||||
{
|
||||
$result->browser = ucfirst($matches[1]);
|
||||
$result->version = $matches[2];
|
||||
return $result;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -229,6 +229,50 @@ class UATest extends \Codeception\TestCase\Test
|
|||
$this->assertEquals('Yeti', $browser->browser);
|
||||
$this->assertEquals('1.0', $browser->version);
|
||||
$this->assertTrue($browser->is_robot);
|
||||
|
||||
// Baiduspider
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)');
|
||||
$this->assertEquals('Baiduspider', $browser->browser);
|
||||
$this->assertEquals('2.0', $browser->version);
|
||||
$this->assertTrue($browser->is_robot);
|
||||
|
||||
// wget
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('wget/1.17.1');
|
||||
$this->assertEquals('Wget', $browser->browser);
|
||||
$this->assertEquals('1.17', $browser->version);
|
||||
$this->assertFalse($browser->is_robot);
|
||||
|
||||
// curl
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('curl/7.47.0');
|
||||
$this->assertEquals('Curl', $browser->browser);
|
||||
$this->assertEquals('7.47', $browser->version);
|
||||
$this->assertFalse($browser->is_robot);
|
||||
|
||||
// PHP with version
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('PHP/5.2.9');
|
||||
$this->assertEquals('PHP', $browser->browser);
|
||||
$this->assertEquals('5.2', $browser->version);
|
||||
$this->assertFalse($browser->is_robot);
|
||||
|
||||
// PHP without version
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('PHP');
|
||||
$this->assertEquals('PHP', $browser->browser);
|
||||
$this->assertNull($browser->version);
|
||||
|
||||
// PHP with HTTP_Request2
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('HTTP_Request2/2.1.1 (http://pear.php.net/package/http_request2) PHP/5.3.2');
|
||||
$this->assertEquals('PHP', $browser->browser);
|
||||
$this->assertEquals('5.3', $browser->version);
|
||||
|
||||
// Some random browser with the 'Mozilla' version
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; XH; rv:8.578.498) fr, Gecko/20121021 Camino/8.723+ (Firefox compatible)');
|
||||
$this->assertEquals('Mozilla', $browser->browser);
|
||||
$this->assertEquals('5.0', $browser->version);
|
||||
|
||||
// Some random browser without the 'Mozilla' version
|
||||
$browser = Rhymix\Framework\UA::getBrowserInfo('W3C_Validator/1.650');
|
||||
$this->assertEquals('W3C_Validator', $browser->browser);
|
||||
$this->assertEquals('1.650', $browser->version);
|
||||
}
|
||||
|
||||
public function testEncodeFilenameForDownload()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue