![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/php-webdriver/webdriver/lib/ |
<?php namespace Facebook\WebDriver; use InvalidArgumentException; /** * Set values of an cookie. * * Implements ArrayAccess for backwards compatibility. * * @see https://w3c.github.io/webdriver/webdriver-spec.html#cookies */ class Cookie implements \ArrayAccess { /** @var array */ protected $cookie = []; /** * @param string $name The name of the cookie; may not be null or an empty string. * @param string $value The cookie value; may not be null. */ public function __construct($name, $value) { $this->validateCookieName($name); $this->validateCookieValue($value); $this->cookie['name'] = $name; $this->cookie['value'] = $value; } /** * @param array $cookieArray The cookie fields; must contain name and value. * @return Cookie */ public static function createFromArray(array $cookieArray) { if (!isset($cookieArray['name'])) { throw new InvalidArgumentException('Cookie name should be set'); } if (!isset($cookieArray['value'])) { throw new InvalidArgumentException('Cookie value should be set'); } $cookie = new self($cookieArray['name'], $cookieArray['value']); if (isset($cookieArray['path'])) { $cookie->setPath($cookieArray['path']); } if (isset($cookieArray['domain'])) { $cookie->setDomain($cookieArray['domain']); } if (isset($cookieArray['expiry'])) { $cookie->setExpiry($cookieArray['expiry']); } if (isset($cookieArray['secure'])) { $cookie->setSecure($cookieArray['secure']); } if (isset($cookieArray['httpOnly'])) { $cookie->setHttpOnly($cookieArray['httpOnly']); } if (isset($cookieArray['sameSite'])) { $cookie->setSameSite($cookieArray['sameSite']); } return $cookie; } /** * @return string */ public function getName() { return $this->offsetGet('name'); } /** * @return string */ public function getValue() { return $this->offsetGet('value'); } /** * The path the cookie is visible to. Defaults to "/" if omitted. * * @param string $path */ public function setPath($path) { $this->offsetSet('path', $path); } /** * @return string|null */ public function getPath() { return $this->offsetGet('path'); } /** * The domain the cookie is visible to. Defaults to the current browsing context's document's URL domain if omitted. * * @param string $domain */ public function setDomain($domain) { if (mb_strpos($domain, ':') !== false) { throw new InvalidArgumentException(sprintf('Cookie domain "%s" should not contain a port', $domain)); } $this->offsetSet('domain', $domain); } /** * @return string|null */ public function getDomain() { return $this->offsetGet('domain'); } /** * The cookie's expiration date, specified in seconds since Unix Epoch. * * @param int $expiry */ public function setExpiry($expiry) { $this->offsetSet('expiry', (int) $expiry); } /** * @return int|null */ public function getExpiry() { return $this->offsetGet('expiry'); } /** * Whether this cookie requires a secure connection (https). Defaults to false if omitted. * * @param bool $secure */ public function setSecure($secure) { $this->offsetSet('secure', $secure); } /** * @return bool|null */ public function isSecure() { return $this->offsetGet('secure'); } /** * Whether the cookie is an HTTP only cookie. Defaults to false if omitted. * * @param bool $httpOnly */ public function setHttpOnly($httpOnly) { $this->offsetSet('httpOnly', $httpOnly); } /** * @return bool|null */ public function isHttpOnly() { return $this->offsetGet('httpOnly'); } /** * The cookie's same-site value. * * @param string $sameSite */ public function setSameSite($sameSite) { $this->offsetSet('sameSite', $sameSite); } /** * @return string|null */ public function getSameSite() { return $this->offsetGet('sameSite'); } /** * @return array */ public function toArray() { $cookie = $this->cookie; if (!isset($cookie['secure'])) { // Passing a boolean value for the "secure" flag is mandatory when using geckodriver $cookie['secure'] = false; } return $cookie; } /** * @param mixed $offset * @return bool */ #[\ReturnTypeWillChange] public function offsetExists($offset) { return isset($this->cookie[$offset]); } /** * @param mixed $offset * @return mixed */ #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->offsetExists($offset) ? $this->cookie[$offset] : null; } /** * @param mixed $offset * @param mixed $value * @return void */ #[\ReturnTypeWillChange] public function offsetSet($offset, $value) { if ($value === null) { unset($this->cookie[$offset]); } else { $this->cookie[$offset] = $value; } } /** * @param mixed $offset * @return void */ #[\ReturnTypeWillChange] public function offsetUnset($offset) { unset($this->cookie[$offset]); } /** * @param string $name */ protected function validateCookieName($name) { if ($name === null || $name === '') { throw new InvalidArgumentException('Cookie name should be non-empty'); } if (mb_strpos($name, ';') !== false) { throw new InvalidArgumentException('Cookie name should not contain a ";"'); } } /** * @param string $value */ protected function validateCookieValue($value) { if ($value === null) { throw new InvalidArgumentException('Cookie value is required when setting a cookie'); } } }