Source for file HTTP_Request.php
Documentation is available at HTTP_Request.php 
// +----------------------------------------------------------------------+  
// +----------------------------------------------------------------------+  
// | Copyright (c) 1997-2003 The PHP Group                                |  
// +----------------------------------------------------------------------+  
// | This source file is subject to version 2.0 of the PHP license,       |  
// | that is bundled with this package in the file LICENSE, and is        |  
// | available at through the world-wide-web at                           |  
// | http://www.php.net/license/2_02.txt.                                 |  
// | If you did not receive a copy of the PHP license and are unable to   |  
// | obtain it through the world-wide-web, please send a note to          |  
// | license@php.net so we can mail you a copy immediately.               |  
// +----------------------------------------------------------------------+  
// | Authors: Fabien MARTY <fabien.marty@free.fr> |  
// +----------------------------------------------------------------------+  
// $Id: HTTP_Request.php,v 1.11 2004/12/15 09:09:33 dufuz Exp $  
require_once 'Cache.php';   
require_once 'HTTP/Request.php';   
define('CACHE_HTTP_REQUEST_GROUP_NAME', 'cache_http_request');   
define('CACHE_HTTP_REQUEST_SUCCESS_RESPONSE_CODE', 200 );   
define('CACHE_HTTP_REQUEST_KEEP_LOCAL_COPY', 1 );   
define('CACHE_HTTP_REQUEST_RETURN_FALSE', 2 );   
define('CACHE_HTTP_REQUEST_RETURN_PEAR_ERROR', 3 );   
* The classical example is :  
* You want to get news from another site through RSS remote files. But you  
* don't want to access to to the remote site at every time you display  
* its news on your site. Because, if the remote site is down or slow...  
* So you you need a class which makes a local cache copy of the remote file.  
* Every x hours, the cache is updated. But if the remote site is down, the  
* local cache copy is keeped (you can also get error messages if you want).  
* So you need this class!  
* Cache_HTTP_Request inherits from Cache and use HTTP_Request to access to  
* require_once('Cache/HTTP_Request.php');  
* $cache = &new Cache_HTTP_Request('http://www.php.net', null, 'file', null, 3600);  
* $remoteFileBody = $cache->getResponseBody();  
* @author   Fabien MARTY <fabien.marty@free.fr>  
* @version  $Id: HTTP_Request.php,v 1.11 2004/12/15 09:09:33 dufuz Exp $  
    // --- Private properties ---  
    * Lifetime in seconds (0 endless)  
    * Cache id for the classic cache file  
    * Cache id for the endless cache file  
    * @see getReponseBody(), getReponseHeader(), getReponseCode()  
    // --- Public methods ---  
    * @param $url The url to access  
    * @param $params Associative array of parameters which can be:  
    *                   method     - Method to use, GET, POST etc  
    *                   http       - HTTP Version to use, 1.0 or 1.1  
    *                   user       - Basic Auth username  
    *                   pass       - Basic Auth password  
    *                   proxy_host - Proxy server host  
    *                   proxy_port - Proxy server port  
    *                   proxy_user - Proxy auth username  
    *                   proxy_pass - Proxy auth password  
    * @param string $container Name of container class  
    * @param array $containerOptions Array with container class options  
    * @param int $mode What to do when the remote server is down :  
    *                    CACHE_HTTP_REQUEST_KEEP_LOCAL_COPY or  
    *                    CACHE_HTTP_REQUEST_RETURN_FALSE or  
    *                    CACHE_HTTP_REQUEST_RETURN_PEAR_ERROR  
    * @param int $expires lifetime of the cached data in seconds - 0 for endless  
    * @see Cache, HTTP_Request  
                                $containerOptions = null , $expires = 3600 ,  
                                $mode = CACHE_HTTP_REQUEST_KEEP_LOCAL_COPY )  
        if (!isset ($containerOptions)) {  
            $containerOptions = array  (  
                'filename_prefix' =>  'cache_'  
        $this->Cache($container, $containerOptions);   
        $this->_request =  &new HTTP_Request ($url, $params);   
        $this->_id2 =  md5($this->_id);  // we need two keys  
        $this->_expires =  $expires;   
    * Get and return the response body (null if no data available)  
    * @return mixed response body  
        return $this->_data['body'];   
    * Get and return the response code (null if no data available)  
    * @return mixed response code  
        return $this->_data['code'];   
    * Get and return the response header (null if no data available)  
    * @return mixed response header  
        return $this->_data['header'];   
    * Set a new mode when the server is down  
    * @param int $newMode What to do when the remote server is down :  
    *                       CACHE_HTTP_REQUEST_KEEP_LOCAL_COPY or  
    *                       CACHE_HTTP_REQUEST_RETURN_FALSE or  
    *                       CACHE_HTTP_REQUEST_RETURN_PEAR_ERROR  
    * Send the HTTP request or use the cache system  
    * If there is a cache file for this HTTP request, the request is not re-sent.  
    * Cached response is used. Yet, if the cache is expired, the HTTP request  
    * is re-sent. Then, if the remote server is down, this method will return :  
    * (depending on the selected mode)  
    * - a PEAR_Error or (better)  
    * - true and the local copy of the latest valid response will be used.  
    * For the last choice, there is a technical tips.  
    * Indeed, there are two cache files. The first one (id key) is a classical one  
    * with the given lifetime. But it can be removed by automatic garbage collection  
    * for example. So to be able to use the latest valid response (when the remote  
    * server is dead), we make a second cache file with no lifetime (id2 key).  
    * @return mixed true or false or a PEAR_ERROR  
            if ($this->_sendRequestAndGetResponse ()) {  
                // So the remote server is ok...  
                    // Ok, the "recover cache" is available...  
                        // We make a new local copy and keep it until it expires...  
                        $this->_data =  $data_sav;   
                        // We return a PEAR_Error!  
                        return new  Cache_Error('Remote file is not available!');   
                    // It's terrible! The remote server is down and definitively no cache available!  
                    return new  Cache_Error('Remote server down and no cache available!');   
    // --- Private Methods ---  
    * Send HTTP request and get the response  
    * @return boolean success or not ?  
    function _sendRequestAndGetResponse ()  
        $this->_request->sendRequest ();   
        $body =  $this->_request->getResponseBody ();   
        $code =  $this->_request->getResponseCode ();   
        $header =  $this->_request->getResponseHeader ();   
 
 
        
		    
 
		    Documentation generated on Mon, 11 Mar 2019 15:25:50 -0400 by  phpDocumentor 1.4.4. PEAR Logo Copyright ©  PHP Group 2004.
	        
       |