File Manager

Current Directory: /home/astoriaah/www/templates/yootheme-BK/vendor/yootheme/framework/src/Http/Message
Viewing File: /home/astoriaah/www/templates/yootheme-BK/vendor/yootheme/framework/src/Http/Message/Uri.php
<?php namespace YOOtheme\Http\Message; use Psr\Http\Message\UriInterface; class Uri implements UriInterface { const PATH = '/(?:[^a-zA-Z0-9_\-\.~:@&=\+\$,\/;%]+|%(?![A-Fa-f0-9]{2}))/'; const QUERY = '/(?:[^a-zA-Z0-9_\-\.~!\$&\'\(\)\*\+,;=%:@\/\?]+|%(?![A-Fa-f0-9]{2}))/'; /** * @var string */ protected $scheme = ''; /** * @var string */ protected $userInfo = ''; /** * @var string */ protected $host = ''; /** * @var null|int */ protected $port; /** * @var string */ protected $path = ''; /** * @var string */ protected $query = ''; /** * @var string */ protected $fragment = ''; /** * @var array */ protected static $schemes = [ 'http' => 80, 'https' => 443, ]; /** * Constructor. * * @param string $url */ public function __construct($url) { extract(parse_url($url)); $this->scheme = isset($scheme) ? static::filterScheme($scheme) : ''; $this->host = isset($host) ? $host : ''; $this->port = isset($port) ? static::filterPort($port) : null; $this->path = empty($path) ? '/' : static::filterPath($path); $this->query = isset($query) ? static::filterQuery($query) : ''; $this->fragment = isset($fragment) ? static::filterQuery($fragment) : ''; $this->userInfo = isset($user) ? $user : ''; if (isset($pass)) { $this->userInfo .= ":$pass"; } } /** * Creates an instance from server globals. * * @param array $server * @return static */ public static function fromGlobals(array $server = []) { if (!$server) { $server = $_SERVER; } $http = isset($server['HTTPS']) ? 'https://' : 'http://'; $host = isset($server['HTTP_HOST']) ? $server['HTTP_HOST'] : ''; $path = isset($server['REQUEST_URI']) ? $server['REQUEST_URI'] : ''; return new static($http.$host.$path); } /** * {@inheritdoc} */ public function getAuthority() { $port = $this->getPort(); $user = $this->getUserInfo(); return ($user ? $user . '@' : '') . $this->getHost() . ($port !== null ? ':' . $port : ''); } /** * {@inheritdoc} */ public function getScheme() { return $this->scheme; } /** * {@inheritdoc} */ public function withScheme($scheme) { $clone = clone $this; $clone->scheme = static::filterScheme($scheme); return $clone; } /** * {@inheritdoc} */ public function getUserInfo() { return $this->userInfo; } /** * {@inheritdoc} */ public function withUserInfo($user, $password = null) { $userInfo = $user; if ($password) { $userInfo .= ":$password"; } $clone = clone $this; $clone->userInfo = $userInfo; return $clone; } /** * {@inheritdoc} */ public function getHost() { return $this->host; } /** * {@inheritdoc} */ public function withHost($host) { $clone = clone $this; $clone->host = $host; return $clone; } /** * {@inheritdoc} */ public function getPort() { if (isset(static::$schemes[$this->scheme]) && $this->port == static::$schemes[$this->scheme]) { return null; } return $this->port; } /** * {@inheritdoc} */ public function withPort($port) { $clone = clone $this; $clone->port = static::filterPort($port); return $clone; } /** * {@inheritdoc} */ public function getPath() { return $this->path; } /** * {@inheritdoc} */ public function withPath($path) { $clone = clone $this; $clone->path = static::filterPath($path); return $clone; } /** * {@inheritdoc} */ public function getQuery() { return $this->query; } /** * {@inheritdoc} */ public function withQuery($query) { $clone = clone $this; $clone->query = static::filterQuery(ltrim($query, '?')); return $clone; } /** * {@inheritdoc} */ public function getFragment() { return $this->fragment; } /** * {@inheritdoc} */ public function withFragment($fragment) { $clone = clone $this; $clone->fragment = static::filterQuery(ltrim($fragment, '#')); return $clone; } /** * {@inheritdoc} */ public function __toString() { $scheme = $this->getScheme(); $authority = $this->getAuthority(); $path = $this->getPath(); $query = $this->getQuery(); $fragment = $this->getFragment(); return ($scheme ? $scheme . ':' : '') . ($authority ? '//' . $authority : '') . $path . ($query ? '?' . $query : '') . ($fragment ? '#' . $fragment : ''); } /** * Filter URI scheme. * * @param string $scheme * @return string */ protected static function filterScheme($scheme) { $scheme = strtolower($scheme); $scheme = rtrim($scheme, ':/'); if ($scheme !== '' && !isset(static::$schemes[$scheme])) { throw new \InvalidArgumentException('Uri scheme must be one of: "", "http", "https"'); } return $scheme; } /** * Filter URI port. * * @param int|null $port * @return int|null */ protected static function filterPort($port) { if (is_null($port) || (is_integer($port) && ($port >= 1 && $port <= 65535))) { return $port; } throw new \InvalidArgumentException('Uri port must be null or an integer between 1 and 65535'); } /** * Filter URI path. * * @param string $path * @return string */ protected static function filterPath($path) { return preg_replace_callback(static::PATH, function ($match) { return rawurlencode($match[0]); }, $path); } /** * Filters the query string or fragment of a URI. * * @param string $query * @return string */ protected static function filterQuery($query) { return preg_replace_callback(static::QUERY, function ($match) { return rawurlencode($match[0]); }, $query); } }