/** * Client * * @param string $product * @param float|int|string|null $version * @param int|null $statusCode * @return UserAgentClient */ public function client($product = self::USER_AGENT, $version = null, $statusCode = null) { $userAgentString = $version === null ? $product : $product . '/' . $version; $match = $userAgentString; if (!isset($this->handler[$userAgentString])) { // User-agent does not match any rule sets $userAgentParser = new UserAgentStringParser($product, $version); if (($match = $userAgentParser->getMostSpecific($this->getUserAgents())) === false) { $match = self::USER_AGENT; } } return new UserAgentClient($this->handler[$match], $this->base, $statusCode, $product); }
/** * Find the most rule-matching User-Agent * * @return string */ protected function matchUserAgent() { $userAgentParser = new UserAgentParser($this->userAgent); $this->userAgentMatch = ($match = $userAgentParser->getMostSpecific(array_keys($this->rules))) !== false ? $match : self::USER_AGENT; return $this->userAgentMatch; }