diff options
Diffstat (limited to 'pear/tests/download_test_classes.php.inc')
-rw-r--r-- | pear/tests/download_test_classes.php.inc | 403 |
1 files changed, 0 insertions, 403 deletions
diff --git a/pear/tests/download_test_classes.php.inc b/pear/tests/download_test_classes.php.inc deleted file mode 100644 index 0341a28611..0000000000 --- a/pear/tests/download_test_classes.php.inc +++ /dev/null @@ -1,403 +0,0 @@ -<?php -require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'PEAR_test_mock_pearweb.php.inc'; -$GLOBALS['pearweb'] = new PEAR_test_mock_pearweb; -class test_XML_RPC_Client extends XML_RPC_Client { - function test_XML_RPC_Client() - { - $this->_fakepearweb = &$GLOBALS['pearweb']; - } - - function sendPayloadHTTP10($msg, $server, $port, $timeout=0, - $username="", $password="") - { - // Only create the payload if it was not created previously - if(empty($msg->payload)) $msg->createPayload(); - - $resp = $this->_fakepearweb->receiveXmlrpc($msg->payload); - - $resp=$msg->parseResponse($resp); - return $resp; - } -} -require_once 'PEAR/Remote.php'; - -class test_PEAR_Remote extends PEAR_Remote { - var $_pearweb; - var $_fakepearweb = true; - var $_simulateEpi = true; - function test_PEAR_Remote($config) - { - $pearweb = &$GLOBALS['pearweb']; - include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'download_test.config.inc'; - $this->_pearweb = $pearweb; - parent::PEAR_Remote($config); - $this->_pearweb->setRemote($this); - } - - function parentcall() - { - $args = func_get_args(); - $method = array_shift($args); - switch (count($args)) { - case 0: - $result = PEAR_Remote::call_epi($method); - break; - case 1: - $result = PEAR_Remote::call_epi($method, $args[0]); - break; - case 2: - $result = PEAR_Remote::call_epi($method, $args[0], $args[1]); - break; - case 3: - $result = PEAR_Remote::call_epi($method, $args[0], $args[1], $args[2]); - break; - case 4: - $result = PEAR_Remote::call_epi($method, $args[0], $args[1], $args[2], $args[3]); - break; - case 5: - $result = PEAR_Remote::call_epi($method, $args[0], $args[1], $args[2], $args[3], $args[4]); - break; - case 6: - $result = PEAR_Remote::call_epi($method, $args[0], $args[1], $args[2], $args[3], $args[4], $args[5]); - break; - } - return $result; - } - - function call($method) - { - $_args = $args = func_get_args(); - - $server_channel = $this->config->get('default_channel'); - $channel = $this->_registry->getChannel($server_channel); - if ($channel) { - if (!$channel->supports('xml-rpc', $method)) { - // check for channel.list, which is implicitly supported for the PEAR channel - if (!(strtolower($server_channel) == 'pear' && $method == 'channel.list')) { - return $this->raiseError("Channel $server_channel does not support xml-rpc method $method"); - } - } - } - - array_unshift($_args, $channel); // cache by channel - $this->cache = $this->getCache($_args); - $cachettl = $this->config->get('cache_ttl'); - // If cache is newer than $cachettl seconds, we use the cache! - if ($this->cache !== null && $this->cache['age'] < $cachettl) { - return $this->cache['content']; - }; - if ($this->_simulateEpi) { - $result = call_user_func_array(array(&$this, 'call_epi'), $args); - if (!PEAR::isError($result)) { - $this->saveCache($_args, $result); - }; - return $result; - } - if (!extension_loaded("xmlrpc")) { - return $this->raiseError("For this remote PEAR operation you need to install the xmlrpc extension"); - } - array_shift($args); - $server_host = $this->_registry->channelInfo($server_channel, 'server'); - $username = $this->config->get('username'); - $password = $this->config->get('password'); - $eargs = array(); - foreach($args as $arg) $eargs[] = $this->_encode($arg); - $f = new XML_RPC_Message($method, $eargs); - if ($this->cache !== null) { - $maxAge = '?maxAge='.$this->cache['lastChange']; - } else { - $maxAge = ''; - }; - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - if ($proxy = parse_url($this->config->get('http_proxy'))) { - $proxy_host = @$proxy['host']; - $proxy_port = @$proxy['port']; - $proxy_user = @$proxy['user']; - $proxy_pass = @$proxy['pass']; - } - $c = new test_XML_RPC_Client('/xmlrpc.php'.$maxAge, $server_host, 80, $proxy_host, $proxy_port, $proxy_user, $proxy_pass); - if ($username && $password) { - $c->setCredentials($username, $password); - } - if ($this->config->get('verbose') >= 3) { - $c->setDebug(1); - } - $r = $c->send($f); - if (!$r) { - return $this->raiseError("XML_RPC send failed"); - } - $v = $r->value(); - if ($e = $r->faultCode()) { - if ($e == $GLOBALS['XML_RPC_err']['http_error'] && strstr($r->faultString(), '304 Not Modified') !== false) { - return $this->cache['content']; - } - return $this->raiseError($r->faultString(), $e); - } - - $result = XML_RPC_decode($v); - $this->saveCache($_args, $result); - return $result; - } - - function call_epi($method) - { - $args = func_get_args(); - array_shift($args); - if ($this->_fakepearweb) { - if (count($args)) { - $result = $this->_pearweb->call($method, $args); - } else { - $result = $this->_pearweb->call($method); - } - }/* else { - switch (count($args)) { - case 0: - $result = parent::call($method); - break; - case 1: - $result = parent::call($method, $args[0]); - break; - case 2: - $result = parent::call($method, $args[0], $args[1]); - break; - case 3: - $result = parent::call($method, $args[0], $args[1], $args[2]); - break; - case 4: - $result = parent::call($method, $args[0], $args[1], $args[2], $args[3]); - break; - case 5: - $result = parent::call($method, $args[0], $args[1], $args[2], $args[3], $args[4]); - break; - case 6: - $result = parent::call($method, $args[0], $args[1], $args[2], $args[3], $args[4], $args[5]); - break; - } - }*/ - if (PEAR::isError($result)) { - return $result; - } - return $result; - } -} - -require_once 'PEAR/Installer.php'; -class test_PEAR_Installer extends PEAR_Installer { - function download($packages, $options, &$config, &$installpackages, - &$errors, $installed = false, $willinstall = false, $state = false) - { - // trickiness: initialize here - $this->PEAR_Downloader($this->ui, $options, $config); - $this->_remote = &new test_PEAR_Remote($config); - $ret = PEAR_Downloader::download($packages); - $errors = $this->getErrorMsgs(); - $installpackages = $this->getDownloadedPackages(); - trigger_error("PEAR Warning: PEAR_Installer::download() is deprecated " . - "in favor of PEAR_Downloader class", E_USER_WARNING); - return $ret; - } - - function downloadHttp($url, &$ui, $save_dir = '.', $callback = null) - { -// return parent::downloadHttp($url, $ui, $save_dir, $callback); - if ($callback) { - call_user_func($callback, 'setup', array(&$ui)); - } - if (preg_match('!^http://([^/:?#]*)(:(\d+))?(/.*)!', $url, $matches)) { - list(,$host,,$port,$path) = $matches; - } - if (isset($this)) { - $config = &$this->config; - } else { - $config = &PEAR_Config::singleton(); - } - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - if ($proxy = parse_url($config->get('http_proxy'))) { - $proxy_host = @$proxy['host']; - $proxy_port = @$proxy['port']; - $proxy_user = @$proxy['user']; - $proxy_pass = @$proxy['pass']; - - if ($proxy_port == '') { - $proxy_port = 8080; - } - if ($callback) { - call_user_func($callback, 'message', "Using HTTP proxy $host:$port"); - } - } - if (empty($port)) { - $port = 80; - } - // use _pearweb to get file - $retrieved = explode("\n", $this->_remote->_pearweb->receiveHttp($url)); - $headers = array(); - $line = array_shift($retrieved); - while (strlen(trim($line))) { - if (preg_match('/^([^:]+):\s+(.*)\s*$/', $line, $matches)) { - $headers[strtolower($matches[1])] = trim($matches[2]); - } elseif (preg_match('|^HTTP/1.[01] ([0-9]{3}) |', $line, $matches)) { - if ($matches[1] != 200) { - return PEAR::raiseError("File http://$host:$port$path not valid (received: $line)"); - } - } - $line = array_shift($retrieved); - } - $retrieved = join("\n", $retrieved); - if (isset($headers['content-disposition']) && - preg_match('/\sfilename=\"([^;]*\S)\"\s*(;|$)/', $headers['content-disposition'], $matches)) { - $save_as = basename($matches[1]); - } else { - $save_as = basename($url); - } - if ($callback) { - $tmp = call_user_func($callback, 'saveas', $save_as); - if ($tmp) { - $save_as = $tmp; - } - } - $dest_file = $save_dir . DIRECTORY_SEPARATOR . $save_as; - if (!$wp = @fopen($dest_file, 'wb')) { - fclose($fp); - if ($callback) { - call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg)); - } - return PEAR::raiseError("could not open $dest_file for writing"); - } - if (isset($headers['content-length'])) { - $length = $headers['content-length']; - } else { - $length = -1; - } - $bytes = 0; - if ($callback) { - call_user_func($callback, 'start', array(basename($dest_file), $length)); - } - $start = 0; - while ($start < strlen($retrieved) - 1) { - $data = substr($retrieved, $start, 1024); - $start += 1024; - $bytes += strlen($data); - if ($callback) { - call_user_func($callback, 'bytesread', $bytes); - } - if (!@fwrite($wp, $data)) { - if ($callback) { - call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg)); - } - return PEAR::raiseError("$dest_file: write failed ($php_errormsg)"); - } - } - fclose($wp); - if ($callback) { - call_user_func($callback, 'done', $bytes); - } - return $dest_file; - } -} - -require_once 'PEAR/Downloader.php'; -class test_PEAR_Downloader extends PEAR_Downloader { - function test_PEAR_Downloader(&$ui, $options, &$config) - { - parent::PEAR_Downloader($ui, $options, $config); - $this->_remote = new test_PEAR_Remote($config); - } - - function downloadHttp($url, &$ui, $save_dir = '.', $callback = null) - { -// return parent::downloadHttp($url, $ui, $save_dir, $callback); - if ($callback) { - call_user_func($callback, 'setup', array(&$ui)); - } - if (preg_match('!^http://([^/:?#]*)(:(\d+))?(/.*)!', $url, $matches)) { - list(,$host,,$port,$path) = $matches; - } - if (isset($this)) { - $config = &$this->config; - } else { - $config = &PEAR_Config::singleton(); - } - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - if ($proxy = parse_url($config->get('http_proxy'))) { - $proxy_host = @$proxy['host']; - $proxy_port = @$proxy['port']; - $proxy_user = @$proxy['user']; - $proxy_pass = @$proxy['pass']; - - if ($proxy_port == '') { - $proxy_port = 8080; - } - if ($callback) { - call_user_func($callback, 'message', "Using HTTP proxy $host:$port"); - } - } - if (empty($port)) { - $port = 80; - } - // use _pearweb to get file - $retrieved = explode("\n", $this->_remote->_pearweb->receiveHttp($url)); - $headers = array(); - $line = array_shift($retrieved); - while (strlen(trim($line))) { - if (preg_match('/^([^:]+):\s+(.*)\s*$/', $line, $matches)) { - $headers[strtolower($matches[1])] = trim($matches[2]); - } elseif (preg_match('|^HTTP/1.[01] ([0-9]{3}) |', $line, $matches)) { - if ($matches[1] != 200) { - return PEAR::raiseError("File http://$host:$port$path not valid (received: $line)"); - } - } - $line = array_shift($retrieved); - } - $retrieved = join("\n", $retrieved); - if (isset($headers['content-disposition']) && - preg_match('/\sfilename=\"([^;]*\S)\"\s*(;|$)/', $headers['content-disposition'], $matches)) { - $save_as = basename($matches[1]); - } else { - $save_as = basename($url); - } - if ($callback) { - $tmp = call_user_func($callback, 'saveas', $save_as); - if ($tmp) { - $save_as = $tmp; - } - } - $dest_file = $save_dir . DIRECTORY_SEPARATOR . $save_as; - if (!$wp = @fopen($dest_file, 'wb')) { - fclose($fp); - if ($callback) { - call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg)); - } - return PEAR::raiseError("could not open $dest_file for writing"); - } - if (isset($headers['content-length'])) { - $length = $headers['content-length']; - } else { - $length = -1; - } - $bytes = 0; - if ($callback) { - call_user_func($callback, 'start', array(basename($dest_file), $length)); - } - $start = 0; - while ($start < strlen($retrieved) - 1) { - $data = substr($retrieved, $start, 1024); - $start += 1024; - $bytes += strlen($data); - if ($callback) { - call_user_func($callback, 'bytesread', $bytes); - } - if (!@fwrite($wp, $data)) { - if ($callback) { - call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg)); - } - return PEAR::raiseError("$dest_file: write failed ($php_errormsg)"); - } - } - fclose($wp); - if ($callback) { - call_user_func($callback, 'done', $bytes); - } - return $dest_file; - } -} -?> |