protected function assertProviderResult($result, array $expectedResult) { $this->assertInstanceOf('UserAgentParser\\Model\\UserAgent', $result); $model = new UserAgent(); $expectedResult = array_merge($model->toArray(), $expectedResult); $this->assertEquals($result->toArray(), $expectedResult); }
public function parse($userAgent, array $headers = []) { $resultRaw = parse_user_agent($userAgent); if ($this->hasResult($resultRaw) !== true) { throw new Exception\NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultRaw); /* * Bot detection - is currently not possible! */ /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $resultRaw); // renderingEngine not available // os is mixed with device informations // device is mixed with os return $result; }
public function parse($userAgent, array $headers = []) { $parser = $this->getParser(); /* @var $resultRaw \stdClass */ $resultRaw = $parser->getBrowser($userAgent); /* * No result found? */ if ($this->hasResult($resultRaw) !== true) { throw new NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultRaw); /* * Bot detection (does only work with full_php_browscap.ini) */ if ($this->isBot($resultRaw) === true) { $this->hydrateBot($result->getBot(), $resultRaw); return $result; } /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $resultRaw); $this->hydrateRenderingEngine($result->getRenderingEngine(), $resultRaw); $this->hydrateOperatingSystem($result->getOperatingSystem(), $resultRaw); $this->hydrateDevice($result->getDevice(), $resultRaw); return $result; }
public function parse($userAgent, array $headers = []) { $resultRaw = $this->getResult($userAgent, $headers); /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultRaw); /* * Bot detection */ if (isset($resultRaw->IsCrawler) && $resultRaw->IsCrawler === true) { $this->hydrateBot($result->getBot(), $resultRaw); return $result; } /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $resultRaw); $this->hydrateRenderingEngine($result->getRenderingEngine(), $resultRaw); $this->hydrateOperatingSystem($result->getOperatingSystem(), $resultRaw); $this->hydrateDevice($result->getDevice(), $resultRaw); return $result; }
public function parse($userAgent, array $headers = []) { $resultRaw = $this->getResult($userAgent, $headers); /* * No result found? */ if ($this->hasResult($resultRaw) !== true) { throw new Exception\NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultRaw); /* * Bot detection */ if ($this->isBot($resultRaw) === true) { $this->hydrateBot($result->getBot(), $resultRaw); return $result; } /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $resultRaw); $this->hydrateRenderingEngine($result->getRenderingEngine(), $resultRaw); $this->hydrateOperatingSystem($result->getOperatingSystem(), $resultRaw); $this->hydrateDevice($result->getDevice(), $resultRaw); return $result; }
public function parse($userAgent, array $headers = []) { $headers['User-Agent'] = $userAgent; $parser = $this->getParser(); // $config = $parser->config; // $parser = new Parser\HD4($config); /* * No result found? */ if ($parser->deviceDetect($headers) !== true) { throw new NoResultFoundException('No result found for user agent: ' . $userAgent); } $resultRaw = $parser->getReply(); /* * No result found? */ if (!isset($resultRaw['hd_specs']) || $this->hasResult($resultRaw['hd_specs']) !== true) { throw new NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultRaw['hd_specs']); /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $resultRaw['hd_specs']); // renderingEngine not available $this->hydrateOperatingSystem($result->getOperatingSystem(), $resultRaw['hd_specs']); $this->hydrateDevice($result->getDevice(), $resultRaw['hd_specs']); return $result; }
public function testToArray() { $ua = new UserAgent(); $this->assertEquals(['browser' => $ua->getBrowser()->toArray(), 'renderingEngine' => $ua->getRenderingEngine()->toArray(), 'operatingSystem' => $ua->getOperatingSystem()->toArray(), 'device' => $ua->getDevice()->toArray(), 'bot' => $ua->getBot()->toArray()], $ua->toArray()); $this->assertEquals(['browser' => $ua->getBrowser()->toArray(), 'renderingEngine' => $ua->getRenderingEngine()->toArray(), 'operatingSystem' => $ua->getOperatingSystem()->toArray(), 'device' => $ua->getDevice()->toArray(), 'bot' => $ua->getBot()->toArray(), 'providerResultRaw' => null], $ua->toArray(true)); }
public function parse($userAgent, array $headers = []) { $parser = $this->getParser(); $parser->setHttpHeaders($headers); $parser->setUserAgent($userAgent); /* * Since Mobile_Detect to a regex comparison on every call * We cache it here for all checks and hydration */ $browserName = $parser->browser(); $osName = $parser->platform(); $resultCache = ['browserName' => $browserName, 'browserVersion' => $parser->version($browserName), 'osName' => $osName, 'osVersion' => $parser->version($osName), 'deviceModel' => $parser->device(), 'isMobile' => $parser->isMobile(), 'isRobot' => $parser->isRobot(), 'botName' => $parser->robot()]; /* * No result found? */ if ($this->hasResult($resultCache) !== true) { throw new NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultCache); /* * Bot detection */ if ($resultCache['isRobot'] === true) { $this->hydrateBot($result->getBot(), $resultCache); return $result; } /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $resultCache); $this->hydrateOperatingSystem($result->getOperatingSystem(), $resultCache); $this->hydrateDevice($result->getDevice(), $resultCache); return $result; }
public function parse($userAgent, array $headers = []) { $parser = $this->getParser(); /* @var $resultRaw \UAParser\Result\Client */ $resultRaw = $parser->parse($userAgent); /* * No result found? */ if ($this->hasResult($resultRaw) !== true) { throw new NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultRaw); /* * Bot detection */ if ($this->isBot($resultRaw) === true) { $this->hydrateBot($result->getBot(), $resultRaw); return $result; } /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $resultRaw->ua); // renderingEngine not available $this->hydrateOperatingSystem($result->getOperatingSystem(), $resultRaw->os); $this->hydrateDevice($result->getDevice(), $resultRaw->device); return $result; }
public function parse($userAgent, array $headers = []) { $resultRaw = $this->getParser($userAgent); /* * No result found? */ if ($this->hasResult($resultRaw) !== true) { throw new NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultRaw); /* * Bot detection */ if ($this->isRealResult($resultRaw->Robot->getType()) === true) { $this->hydrateBot($result->getBot(), $resultRaw->Robot); return $result; } /* * hydrate the result */ if ($resultRaw->Browser instanceof EndorphinDetector\Browser) { $this->hydrateBrowser($result->getBrowser(), $resultRaw->Browser); } if ($resultRaw->OS instanceof EndorphinDetector\OS) { $this->hydrateOperatingSystem($result->getOperatingSystem(), $resultRaw->OS); } if ($resultRaw->Device instanceof EndorphinDetector\Device) { $this->hydrateDevice($result->getDevice(), $resultRaw->Device); } return $result; }
public function parse($userAgent, array $headers = []) { $browserRaw = $this->getBrowserParser($userAgent); $osRaw = $this->getOperatingSystemParser($userAgent); $deviceRaw = $this->getDeviceParser($userAgent); /* * No result found? */ if ($this->hasResult($browserRaw, $osRaw, $deviceRaw) !== true) { throw new NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw(['browser' => $browserRaw, 'operatingSystem' => $osRaw, 'device' => $deviceRaw]); /* * Bot detection */ if ($browserRaw->isRobot() === true) { $bot = $result->getBot(); $bot->setIsBot(true); return $result; } /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $browserRaw); // renderingEngine not available $this->hydrateOperatingSystem($result->getOperatingSystem(), $osRaw); $this->hydrateDevice($result->getDevice(), $osRaw, $deviceRaw); return $result; }
function hydrateResult(array $row2, \UserAgentParser\Model\UserAgent $result) { $toHydrate = ['resBrowserName' => $result->getBrowser()->getName(), 'resBrowserVersion' => $result->getBrowser()->getVersion()->getComplete(), 'resEngineName' => $result->getRenderingEngine()->getName(), 'resEngineVersion' => $result->getRenderingEngine()->getVersion()->getComplete(), 'resOsName' => $result->getOperatingSystem()->getName(), 'resOsVersion' => $result->getOperatingSystem()->getVersion()->getComplete(), 'resDeviceModel' => $result->getDevice()->getModel(), 'resDeviceBrand' => $result->getDevice()->getBrand(), 'resDeviceType' => $result->getDevice()->getType(), 'resDeviceIsMobile' => $result->getDevice()->getIsMobile(), 'resDeviceIsTouch' => $result->getDevice()->getIsTouch(), 'resBotIsBot' => $result->getBot()->getIsBot(), 'resBotName' => $result->getBot()->getName(), 'resBotType' => $result->getBot()->getType(), 'resRawResult' => serialize($result->toArray(true)['providerResultRaw'])]; return array_merge($row2, $toHydrate); }
public function parse($userAgent, array $headers = []) { $parser = $this->getParser(); $parser->analyze($userAgent); $browser = $parser->browser; $os = $parser->os; $device = $parser->device; $platform = $parser->platform; /* * No result found? */ if ($this->hasResult($browser, $os, $device) !== true) { throw new NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw(['browser' => $browser, 'os' => $os, 'device' => $device, 'platform' => $platform]); /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $browser); $this->hydrateOperatingSystem($result->getOperatingSystem(), $os); $this->hydrateDevice($result->getDevice(), $device); return $result; }
public function parse($userAgent, array $headers = []) { $headers['User-Agent'] = $userAgent; $parser = $this->getParser($headers); /* * No result found? */ if ($parser->isDetected() !== true) { throw new Exception\NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($parser->toArray()); /* * Bot detection */ if ($parser->getType() === 'bot') { $this->hydrateBot($result->getBot(), $parser->browser); return $result; } /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $parser->browser); $this->hydrateRenderingEngine($result->getRenderingEngine(), $parser->engine); $this->hydrateOperatingSystem($result->getOperatingSystem(), $parser->os); $this->hydrateDevice($result->getDevice(), $parser->device, $parser); return $result; }
public function parse($userAgent, array $headers = []) { $parser = $this->getParser(); $resultRaw = $parser->parse($userAgent); /* * No result found? */ if ($this->hasResult($resultRaw) !== true) { throw new Exception\NoResultFoundException('No result found for user agent: ' . $userAgent); } /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultRaw); /* * Bot detection */ if ($this->isBot($resultRaw) === true) { $this->hydrateBot($result->getBot(), $resultRaw); return $result; } /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $resultRaw); // renderingEngine not available // operatingSystem filled OS is mixed! Examples: iPod, iPhone, Android... $this->hydrateDevice($result->getDevice(), $resultRaw); return $result; }
public function parse($userAgent, array $headers = []) { $parser = $this->getParser(); /* @var $resultRaw \UAParser\Result\Result */ $resultRaw = $parser->parse($userAgent); /* * No result found? */ if ($this->hasResult($resultRaw) !== true) { throw new Exception\NoResultFoundException('No result found for user agent: ' . $userAgent); } /* @var $emailRaw \UAParser\Result\EmailClientResult */ // currently not used...any idea to implement it? /* * Hydrate the model */ $result = new Model\UserAgent(); $result->setProviderResultRaw($resultRaw); /* * Bot detection is currently not possible */ /* * hydrate the result */ $this->hydrateBrowser($result->getBrowser(), $resultRaw->getBrowser()); $this->hydrateRenderingEngine($result->getRenderingEngine(), $resultRaw->getRenderingEngine()); $this->hydrateOperatingSystem($result->getOperatingSystem(), $resultRaw->getOperatingSystem()); $this->hydrateDevice($result->getDevice(), $resultRaw->getDevice()); return $result; }