From 722cd4fa17d2f3be7a79fc36b61df65752ffdef1 Mon Sep 17 00:00:00 2001 From: Stig Bakken Date: Tue, 23 Apr 2002 07:01:45 +0000 Subject: [PATCH] * use PEAR_Common::downloadHttp() --- pear/PEAR/Command/Remote.php | 70 +++++++++++++++++------------------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/pear/PEAR/Command/Remote.php b/pear/PEAR/Command/Remote.php index 1b2de8942d..87f73c3846 100644 --- a/pear/PEAR/Command/Remote.php +++ b/pear/PEAR/Command/Remote.php @@ -20,6 +20,7 @@ // $Id$ require_once 'PEAR/Command/Common.php'; +require_once 'PEAR/Common.php'; require_once 'PEAR/Remote.php'; class PEAR_Command_Remote extends PEAR_Command_Common @@ -75,61 +76,47 @@ class PEAR_Command_Remote extends PEAR_Command_Common $failmsg = ''; $remote = &new PEAR_Remote($this->config); switch ($command) { + // {{{ remote-package-info + case 'remote-package-info': { break; } + + // }}} + // {{{ list-remote-packages + case 'list-remote-packages': { break; } + + // }}} + // {{{ download + case 'download': { //$params[0] -> The package to download if (count($params) != 1) { return PEAR::raiseError("download expects one argument: the package to download"); } + $server = $this->config->get('master_server'); if (!ereg('^http://', $params[0])) { - $pkgfile = "http://" . $this->config->get('master_server') . - "/get/" . $params[0]; + $pkgfile = "http://$server/get/$params[0]"; } else { $pkgfile = $params[0]; } - if (!extension_loaded("zlib")) { - $pkgfile .= '?uncompress=yes'; - } - if (!@include_once 'HTTP.php') { - return $this->raiseError('The "download" command needs HTTP.php to be installed'); - } - $headers = HTTP::head($pkgfile); - if (PEAR::isError($headers)) { - $msg = $headers->getMessage(); - return $this->raiseError("Could not retrieve remote file information ($msg)"); - } - if (isset($headers['Content-disposition'])) { - preg_match('|filename="(.*)"$|', $headers['Content-disposition'], $matches); - $fname = $matches[1]; - } else { - $fname = basename($pkgfile); - } - if (!$wp = @fopen($pkgfile, 'wb')) { - $failmsg = "Could not download $pkgfile"; break; + $this->bytes_downloaded = 0; + $saved = PEAR_Common::downloadHttp($pkgfile, $this->ui, $this->config, '.', + array(&$this, 'downloadCallback')); + if (PEAR::isError($saved)) { + return $this->raiseError($saved); } - if (!$fp = @fopen($fname, 'wb')) { - $failmsg = "Could not write the file here"; break; - } - $bytes = 0; - $this->ui->displayLine("Downloading $pkgfile:"); - while ($data = @fread($wp, 16384)) { - $bytes += strlen($data); - if (!@fwrite($fp, $data)) { - return $this->raiseError("$pkgfile: write failed ($php_errormsg)"); - } - $this->ui->display('...'); - } - $this->ui->display(" done!\n"); - fclose($fp); - fclose($wp); - $this->ui->displayLine("File $fname downloaded ($bytes bytes)"); + $fname = basename($saved); + $this->ui->displayLine("File $fname downloaded ($this->bytes_downloaded bytes)"); break; } + + // }}} + // {{{ list-upgrades + case 'list-upgrades': { include_once "PEAR/Registry.php"; if (empty($params[0])) { @@ -179,6 +166,8 @@ class PEAR_Command_Remote extends PEAR_Command_Common $this->ui->endTable(); break; } + + // }}} default: { return false; } @@ -191,7 +180,12 @@ class PEAR_Command_Remote extends PEAR_Command_Common // }}} - + function downloadCallback($msg, $params = null) + { + if ($msg == 'done') { + $this->bytes_downloaded = $params; + } + } } ?> \ No newline at end of file -- 2.50.1