Файл: vendor/whichbrowser/parser/src/Analyser/Header.php
Строк: 112
<?php
namespace WhichBrowserAnalyser;
use WhichBrowserConstants;
use WhichBrowserParser;
trait Header
{
private function &analyseHeaders()
{
/* Analyse the main useragent header */
if ($header = $this->getHeader('User-Agent')) {
$this->analyseUserAgent($header);
}
/* Analyse secondary useragent headers */
if ($header = $this->getHeader('X-Original-User-Agent')) {
$this->additionalUserAgent($header);
}
if ($header = $this->getHeader('X-Device-User-Agent')) {
$this->additionalUserAgent($header);
}
if ($header = $this->getHeader('Device-Stock-UA')) {
$this->additionalUserAgent($header);
}
if ($header = $this->getHeader('X-OperaMini-Phone-UA')) {
$this->additionalUserAgent($header);
}
if ($header = $this->getHeader('X-UCBrowser-Device-UA')) {
$this->additionalUserAgent($header);
}
/* Analyse browser specific headers */
if ($header = $this->getHeader('X-OperaMini-Phone')) {
$this->analyseOperaMiniPhone($header);
}
if ($header = $this->getHeader('X-UCBrowser-Phone-UA')) {
$this->analyseOldUCUserAgent($header);
}
if ($header = $this->getHeader('X-UCBrowser-UA')) {
$this->analyseNewUCUserAgent($header);
}
if ($header = $this->getHeader('X-Puffin-UA')) {
$this->analysePuffinUserAgent($header);
}
if ($header = $this->getHeader('Baidu-FlyFlow')) {
$this->analyseBaiduHeader($header);
}
/* Analyse Android WebView browser ids */
if ($header = $this->getHeader('X-Requested-With')) {
$this->analyseBrowserId($header);
}
/* Analyse WAP profile header */
if ($header = $this->getHeader('X-Wap-Profile')) {
$this->analyseWapProfile($header);
}
return $this;
}
private function analyseUserAgent($header)
{
new HeaderUseragent($header, $this->data, $this->options);
}
private function analyseBaiduHeader($header)
{
new HeaderBaidu($header, $this->data);
}
private function analyseOperaMiniPhone($header)
{
new HeaderOperaMini($header, $this->data);
}
private function analyseBrowserId($header)
{
new HeaderBrowserId($header, $this->data);
}
private function analysePuffinUserAgent($header)
{
new HeaderPuffin($header, $this->data);
}
private function analyseNewUCUserAgent($header)
{
new HeaderUCBrowserNew($header, $this->data);
}
private function analyseOldUCUserAgent($header)
{
new HeaderUCBrowserOld($header, $this->data);
}
private function analyseWapProfile($header)
{
new HeaderWap($header, $this->data);
}
private function additionalUserAgent($ua)
{
$extra = new Parser($ua);
if ($extra->device->type != ConstantsDeviceType::DESKTOP) {
if (isset($extra->os->name)) {
$this->data->os = $extra->os;
}
if ($extra->device->identified) {
$this->data->device = $extra->device;
}
}
}
private function getHeader($h)
{
/* Find the header that matches */
foreach ($this->headers as $k => $v) {
if (strtolower($h) == strtolower($k)) {
/* And return the first 1024 bytes */
return substr($v, 0, 1024);
}
}
}
}