diff options
Diffstat (limited to '3rdparty/ZendFeed/Uri.php')
-rw-r--r-- | 3rdparty/ZendFeed/Uri.php | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/3rdparty/ZendFeed/Uri.php b/3rdparty/ZendFeed/Uri.php new file mode 100644 index 000000000..940bce11a --- /dev/null +++ b/3rdparty/ZendFeed/Uri.php @@ -0,0 +1,184 @@ +<?php +/** + * Zend Framework (http://framework.zend.com/) + * + * @link http://github.com/zendframework/zf2 for the canonical source repository + * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +namespace Zend\Feed; + +class Uri +{ + /** + * @var string + */ + protected $fragment; + + /** + * @var string + */ + protected $host; + + /** + * @var string + */ + protected $pass; + + /** + * @var string + */ + protected $path; + + /** + * @var int + */ + protected $port; + + /** + * @var string + */ + protected $query; + + /** + * @var string + */ + protected $scheme; + + /** + * @var string + */ + protected $user; + + /** + * @var bool + */ + protected $valid; + + /** + * Valid schemes + */ + protected $validSchemes = array( + 'http', + 'https', + 'file', + ); + + /** + * @param string $uri + */ + public function __construct($uri) + { + $parsed = parse_url($uri); + if (false === $parsed) { + $this->valid = false; + return; + } + + $this->scheme = isset($parsed['scheme']) ? $parsed['scheme'] : null; + $this->host = isset($parsed['host']) ? $parsed['host'] : null; + $this->port = isset($parsed['port']) ? $parsed['port'] : null; + $this->user = isset($parsed['user']) ? $parsed['user'] : null; + $this->pass = isset($parsed['pass']) ? $parsed['pass'] : null; + $this->path = isset($parsed['path']) ? $parsed['path'] : null; + $this->query = isset($parsed['query']) ? $parsed['query'] : null; + $this->fragment = isset($parsed['fragment']) ? $parsed['fragment'] : null; + } + + /** + * Create an instance + * + * Useful for chained validations + * + * @param string $uri + * @return self + */ + public static function factory($uri) + { + return new static($uri); + } + + /** + * Retrieve the host + * + * @return string + */ + public function getHost() + { + return $this->host; + } + + /** + * Retrieve the URI path + * + * @return string + */ + public function getPath() + { + return $this->path; + } + + /** + * Retrieve the scheme + * + * @return string + */ + public function getScheme() + { + return $this->scheme; + } + + /** + * Is the URI valid? + * + * @return bool + */ + public function isValid() + { + if (false === $this->valid) { + return false; + } + + if ($this->scheme && !in_array($this->scheme, $this->validSchemes)) { + return false; + } + + if ($this->host) { + if ($this->path && substr($this->path, 0, 1) != '/') { + return false; + } + return true; + } + + // no host, but user and/or port... what? + if ($this->user || $this->port) { + return false; + } + + if ($this->path) { + // Check path-only (no host) URI + if (substr($this->path, 0, 2) == '//') { + return false; + } + return true; + } + + if (! ($this->query || $this->fragment)) { + // No host, path, query or fragment - this is not a valid URI + return false; + } + + return true; + } + + /** + * Is the URI absolute? + * + * @return bool + */ + public function isAbsolute() + { + return ($this->scheme !== null); + } +} |