1
0
Fork 0

Reverted the last changes. Changed logic in callbackGet() method to

respect the 401 handling also if STREAM_NOTIFY_FAILURE fires as on my
local machine the handling of STREAM_NOTIFY_AUTH_REQUIRED never got
executed.
pull/1657/head
Stephan Hochdörfer 2013-03-05 13:34:48 +01:00
parent dcdcf57f3f
commit 906563451e
1 changed files with 3 additions and 15 deletions

View File

@ -125,18 +125,6 @@ class RemoteFilesystem
if ($e instanceof TransportException && !empty($http_response_header[0])) { if ($e instanceof TransportException && !empty($http_response_header[0])) {
$e->setHeaders($http_response_header); $e->setHeaders($http_response_header);
} }
// in case the remote filesystem responds with an 401 error ask for credentials
if($e instanceof TransportException && ($e->getCode() == 401))
{
$this->io->write('Enter the access credentials needed to access the resource at '.$originUrl);
$username = $this->io->ask('Username: ');
$password = $this->io->askAndHideAnswer('Password: ');
$this->io->setAuthentication($originUrl, $username, $password);
// try getting the file again
return $this->get($originUrl, $fileUrl, $additionalOptions, $fileName, $progress);
}
} }
if ($errorMessage && !ini_get('allow_url_fopen')) { if ($errorMessage && !ini_get('allow_url_fopen')) {
$errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')'; $errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')';
@ -223,9 +211,6 @@ class RemoteFilesystem
{ {
switch ($notificationCode) { switch ($notificationCode) {
case STREAM_NOTIFY_FAILURE: case STREAM_NOTIFY_FAILURE:
throw new TransportException('The "'.$this->fileUrl.'" file could not be downloaded ('.trim($message).')', $messageCode);
break;
case STREAM_NOTIFY_AUTH_REQUIRED: case STREAM_NOTIFY_AUTH_REQUIRED:
if (401 === $messageCode) { if (401 === $messageCode) {
if (!$this->io->isInteractive()) { if (!$this->io->isInteractive()) {
@ -240,7 +225,10 @@ class RemoteFilesystem
$this->io->setAuthentication($this->originUrl, $username, $password); $this->io->setAuthentication($this->originUrl, $username, $password);
$this->get($this->originUrl, $this->fileUrl, $this->fileName, $this->progress); $this->get($this->originUrl, $this->fileUrl, $this->fileName, $this->progress);
break;
} }
throw new TransportException('The "'.$this->fileUrl.'" file could not be downloaded ('.trim($message).')', $messageCode);
break; break;
case STREAM_NOTIFY_AUTH_RESULT: case STREAM_NOTIFY_AUTH_RESULT: