From 1ce7c28f11e7c4e08c8bb9f7e9995de6332f97ab Mon Sep 17 00:00:00 2001 From: Wes Mason Date: Tue, 23 Oct 2012 13:47:54 +0100 Subject: [PATCH] Allow OAuth2 authentication to downloads on api.github.com not just github.com --- src/Composer/Downloader/FileDownloader.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Composer/Downloader/FileDownloader.php b/src/Composer/Downloader/FileDownloader.php index 2e5cf0192..220018ae0 100644 --- a/src/Composer/Downloader/FileDownloader.php +++ b/src/Composer/Downloader/FileDownloader.php @@ -85,6 +85,11 @@ class FileDownloader implements DownloaderInterface $this->io->write(" - Installing " . $package->getName() . " (" . VersionParser::formatVersion($package) . ")"); $processUrl = $this->processUrl($package, $url); + $processHost = parse_url($processUrl, PHP_URL_HOST); + + if (strpos($processHost, 'github.com') === (strlen($processHost) - 10)) { + $processHost = 'github.com'; + } try { try { @@ -95,15 +100,15 @@ class FileDownloader implements DownloaderInterface } } } catch (TransportException $e) { - if (404 === $e->getCode() && 'github.com' === parse_url($processUrl, PHP_URL_HOST)) { + if (404 === $e->getCode() && 'github.com' === $processHost) { $message = "\n".'Could not fetch '.$processUrl.', enter your GitHub credentials to access private repos'; $gitHubUtil = new GitHub($this->io, $this->config, null, $this->rfs); - if (!$gitHubUtil->authorizeOAuth('github.com') - && (!$this->io->isInteractive() || !$gitHubUtil->authorizeOAuthInteractively('github.com', $message)) + if (!$gitHubUtil->authorizeOAuth($processHost) + && (!$this->io->isInteractive() || !$gitHubUtil->authorizeOAuthInteractively($processHost, $message)) ) { throw $e; } - $this->rfs->copy(parse_url($processUrl, PHP_URL_HOST), $processUrl, $fileName); + $this->rfs->copy($processHost, $processUrl, $fileName); } else { throw $e; }