summaryrefslogtreecommitdiff
path: root/vendor/miniflux/picofeed/lib/PicoFeed/Client/Url.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/miniflux/picofeed/lib/PicoFeed/Client/Url.php')
-rw-r--r--vendor/miniflux/picofeed/lib/PicoFeed/Client/Url.php290
1 files changed, 0 insertions, 290 deletions
diff --git a/vendor/miniflux/picofeed/lib/PicoFeed/Client/Url.php b/vendor/miniflux/picofeed/lib/PicoFeed/Client/Url.php
deleted file mode 100644
index a9337988..00000000
--- a/vendor/miniflux/picofeed/lib/PicoFeed/Client/Url.php
+++ /dev/null
@@ -1,290 +0,0 @@
-<?php
-
-namespace PicoFeed\Client;
-
-/**
- * URL class.
- *
- * @author Frederic Guillot
- */
-class Url
-{
- /**
- * URL.
- *
- * @var string
- */
- private $url = '';
-
- /**
- * URL components.
- *
- * @var array
- */
- private $components = array();
-
- /**
- * Constructor.
- *
- * @param string $url URL
- */
- public function __construct($url)
- {
- $this->url = $url;
- $this->components = parse_url($url) ?: array();
-
- // Issue with PHP < 5.4.7 and protocol relative url
- if (version_compare(PHP_VERSION, '5.4.7', '<') && $this->isProtocolRelative()) {
- $pos = strpos($this->components['path'], '/', 2);
-
- if ($pos === false) {
- $pos = strlen($this->components['path']);
- }
-
- $this->components['host'] = substr($this->components['path'], 2, $pos - 2);
- $this->components['path'] = substr($this->components['path'], $pos);
- }
- }
-
- /**
- * Shortcut method to get an absolute url from relative url.
- *
- * @static
- *
- * @param mixed $item_url Unknown url (can be relative or not)
- * @param mixed $website_url Website url
- *
- * @return string
- */
- public static function resolve($item_url, $website_url)
- {
- $link = is_string($item_url) ? new self($item_url) : $item_url;
- $website = is_string($website_url) ? new self($website_url) : $website_url;
-
- if ($link->isRelativeUrl()) {
- if ($link->isRelativePath()) {
- return $link->getAbsoluteUrl($website->getBaseUrl($website->getBasePath()));
- }
-
- return $link->getAbsoluteUrl($website->getBaseUrl());
- } elseif ($link->isProtocolRelative()) {
- $link->setScheme($website->getScheme());
- }
-
- return $link->getAbsoluteUrl();
- }
-
- /**
- * Shortcut method to get a base url.
- *
- * @static
- *
- * @param string $url
- *
- * @return string
- */
- public static function base($url)
- {
- $link = new self($url);
-
- return $link->getBaseUrl();
- }
-
- /**
- * Get the base URL.
- *
- * @param string $suffix Add a suffix to the url
- *
- * @return string
- */
- public function getBaseUrl($suffix = '')
- {
- return $this->hasHost() ? $this->getScheme('://').$this->getHost().$this->getPort(':').$suffix : '';
- }
-
- /**
- * Get the absolute URL.
- *
- * @param string $base_url Use this url as base url
- *
- * @return string
- */
- public function getAbsoluteUrl($base_url = '')
- {
- if ($base_url) {
- $base = new self($base_url);
- $url = $base->getAbsoluteUrl().substr($this->getFullPath(), 1);
- } else {
- $url = $this->hasHost() ? $this->getBaseUrl().$this->getFullPath() : '';
- }
-
- return $url;
- }
-
- /**
- * Return true if the url is relative.
- *
- * @return bool
- */
- public function isRelativeUrl()
- {
- return !$this->hasScheme() && !$this->isProtocolRelative();
- }
-
- /**
- * Return true if the path is relative.
- *
- * @return bool
- */
- public function isRelativePath()
- {
- $path = $this->getPath();
-
- return empty($path) || $path{0}
- !== '/';
- }
-
- /**
- * Filters the path of a URI.
- *
- * Imported from Guzzle library: https://github.com/guzzle/psr7/blob/master/src/Uri.php#L568-L582
- *
- * @param $path
- *
- * @return string
- */
- public function filterPath($path, $charUnreserved = 'a-zA-Z0-9_\-\.~', $charSubDelims = '!\$&\'\(\)\*\+,;=')
- {
- return preg_replace_callback(
- '/(?:[^'.$charUnreserved.$charSubDelims.':@\/%]+|%(?![A-Fa-f0-9]{2}))/',
- function (array $matches) { return rawurlencode($matches[0]); },
- $path
- );
- }
-
- /**
- * Get the path.
- *
- * @return string
- */
- public function getPath()
- {
- return $this->filterPath(empty($this->components['path']) ? '' : $this->components['path']);
- }
-
- /**
- * Get the base path.
- *
- * @return string
- */
- public function getBasePath()
- {
- $current_path = $this->getPath();
-
- $path = $this->isRelativePath() ? '/' : '';
- $path .= substr($current_path, -1) === '/' ? $current_path : dirname($current_path);
-
- return preg_replace('/\\\\\/|\/\//', '/', $path.'/');
- }
-
- /**
- * Get the full path (path + querystring + fragment).
- *
- * @return string
- */
- public function getFullPath()
- {
- $path = $this->isRelativePath() ? '/' : '';
- $path .= $this->getPath();
- $path .= empty($this->components['query']) ? '' : '?'.$this->components['query'];
- $path .= empty($this->components['fragment']) ? '' : '#'.$this->components['fragment'];
-
- return $path;
- }
-
- /**
- * Get the hostname.
- *
- * @return string
- */
- public function getHost()
- {
- return empty($this->components['host']) ? '' : $this->components['host'];
- }
-
- /**
- * Return true if the url has a hostname.
- *
- * @return bool
- */
- public function hasHost()
- {
- return !empty($this->components['host']);
- }
-
- /**
- * Get the scheme.
- *
- * @param string $suffix Suffix to add when there is a scheme
- *
- * @return string
- */
- public function getScheme($suffix = '')
- {
- return ($this->hasScheme() ? $this->components['scheme'] : 'http').$suffix;
- }
-
- /**
- * Set the scheme.
- *
- * @param string $scheme Set a scheme
- *
- * @return string
- */
- public function setScheme($scheme)
- {
- $this->components['scheme'] = $scheme;
- }
-
- /**
- * Return true if the url has a scheme.
- *
- * @return bool
- */
- public function hasScheme()
- {
- return !empty($this->components['scheme']);
- }
-
- /**
- * Get the port.
- *
- * @param string $prefix Prefix to add when there is a port
- *
- * @return string
- */
- public function getPort($prefix = '')
- {
- return $this->hasPort() ? $prefix.$this->components['port'] : '';
- }
-
- /**
- * Return true if the url has a port.
- *
- * @return bool
- */
- public function hasPort()
- {
- return !empty($this->components['port']);
- }
-
- /**
- * Return true if the url is protocol relative (start with //).
- *
- * @return bool
- */
- public function isProtocolRelative()
- {
- return strpos($this->url, '//') === 0;
- }
-}