Merge pull request #2015 from jaypea/filedownloader_basicauth

allow FileDownloader to use username:password@ info when downloading
main
Jordi Boggiano 11 years ago
commit 7aa03410e2

@ -99,7 +99,13 @@ class RemoteFilesystem
$this->progress = $progress; $this->progress = $progress;
$this->lastProgress = null; $this->lastProgress = null;
// capture username/password from URL if there is one
if (preg_match('{^https?://(.+):(.+)@([^/]+)}i', $fileUrl, $match)) {
$this->io->setAuthentication($originUrl, urldecode($match[1]), urldecode($match[2]));
}
$options = $this->getOptionsForUrl($originUrl, $additionalOptions); $options = $this->getOptionsForUrl($originUrl, $additionalOptions);
if ($this->io->isDebug()) { if ($this->io->isDebug()) {
$this->io->write('Downloading '.$fileUrl); $this->io->write('Downloading '.$fileUrl);
} }

@ -13,6 +13,7 @@
namespace Composer\Test\Util; namespace Composer\Test\Util;
use Composer\Util\RemoteFilesystem; use Composer\Util\RemoteFilesystem;
use Installer\Exception;
class RemoteFilesystemTest extends \PHPUnit_Framework_TestCase class RemoteFilesystemTest extends \PHPUnit_Framework_TestCase
{ {
@ -143,6 +144,19 @@ class RemoteFilesystemTest extends \PHPUnit_Framework_TestCase
} }
} }
public function testCaptureAuthenticationParamsFromUrl()
{
$io = $this->getMock('Composer\IO\IOInterface');
$io
->expects($this->once())
->method('setAuthentication')
;
$fs = new RemoteFilesystem($io);
$fs->getContents('example.com', 'http://user:pass@www.example.com/something');
}
public function testGetContents() public function testGetContents()
{ {
$fs = new RemoteFilesystem($this->getMock('Composer\IO\IOInterface')); $fs = new RemoteFilesystem($this->getMock('Composer\IO\IOInterface'));

Loading…
Cancel
Save