class ForkRemote
{
+ /**
+ * Contains error message when parse() failed
+ */
+ public $error;
+
protected $url;
/**
public function __construct($url)
{
- $this->url = $url;
+ $this->url = trim($url);
}
public function parse()
{
- $scheme = parse_url($this->url, PHP_URL_SCHEME);
+ if ($this->url == '') {
+ $this->error = 'Empty fork URL';
+ return false;
+ }
+
+ $arUrl = parse_url($this->url);
+ $scheme = isset($arUrl['scheme']) ? $arUrl['scheme'] : '';
+
+ if ($scheme == 'https' && isset($arUrl['host'])
+ && $arUrl['host'] == 'gist.github.com'
+ ) {
+ $this->arGitUrls[][] = 'git://gist.github.com/'
+ . ltrim($arUrl['path'], '/') . '.git';
+ return true;
+ }
+
switch ($scheme) {
case 'git':
//clearly a git url
}
}
- return $count > 0;
+ if ($count > 0) {
+ return true;
+ }
+
+ $this->error = 'No git:// clone URL found';
+ return false;
}
/**
return $this->arGitUrls;
}
+ /**
+ * Get the URL from which the git URL was derived, often
+ * the HTTP URL.
+ *
+ * @return string
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+
+ public function setUrl($url)
+ {
+ $this->url = $url;
+ }
+
public function isSupported($url)
{
return parse_url($url, PHP_URL_SCHEME) == 'git';