web/lib/Zend/Gdata/App/LoggingHttpClientAdapterSocket.php
changeset 64 162c1de6545a
parent 19 1c2f13fd785c
child 68 ecaf28ffe26e
equal deleted inserted replaced
63:5b37998e522e 64:162c1de6545a
       
     1 <?php
       
     2 
       
     3 /**
       
     4  * Zend Framework
       
     5  *
       
     6  * LICENSE
       
     7  *
       
     8  * This source file is subject to the new BSD license that is bundled
       
     9  * with this package in the file LICENSE.txt.
       
    10  * It is also available through the world-wide-web at this URL:
       
    11  * http://framework.zend.com/license/new-bsd
       
    12  * If you did not receive a copy of the license and are unable to
       
    13  * obtain it through the world-wide-web, please send an email
       
    14  * to license@zend.com so we can send you a copy immediately.
       
    15  *
       
    16  * @category   Zend
       
    17  * @package    Zend_Gdata
       
    18  * @subpackage App
       
    19  * @version    $Id: LoggingHttpClientAdapterSocket.php 20096 2010-01-06 02:05:09Z bkarwin $
       
    20  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
       
    21  * @license    http://framework.zend.com/license/new-bsd     New BSD License
       
    22  */
       
    23 
       
    24 /**
       
    25  * @see Zend_Http_Client_Adapter_Socket
       
    26  */
       
    27 require_once 'Zend/Http/Client/Adapter/Socket.php';
       
    28 
       
    29 /**
       
    30  * Overrides the traditional socket-based adapter class for Zend_Http_Client to
       
    31  * enable logging of requests.  All requests are logged to a location specified
       
    32  * in the config as $config['logfile'].  Requests and responses are logged after
       
    33  * they are sent and received/processed, thus an error could prevent logging.
       
    34  *
       
    35  * @category   Zend
       
    36  * @package    Zend_Gdata
       
    37  * @subpackage App
       
    38  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
       
    39  * @license    http://framework.zend.com/license/new-bsd     New BSD License
       
    40  */
       
    41 class Zend_Gdata_App_LoggingHttpClientAdapterSocket extends Zend_Http_Client_Adapter_Socket
       
    42 {
       
    43 
       
    44     /**
       
    45      * The file handle for writing logs
       
    46      *
       
    47      * @var resource|null
       
    48      */
       
    49     protected $log_handle = null;
       
    50 
       
    51     /**
       
    52      * Log the given message to the log file.  The log file is configured
       
    53      * as the config param 'logfile'.  This method opens the file for
       
    54      * writing if necessary.
       
    55      *
       
    56      * @param string $message The message to log
       
    57      */
       
    58     protected function log($message)
       
    59     {
       
    60         if ($this->log_handle == null) {
       
    61             $this->log_handle = fopen($this->config['logfile'], 'a');
       
    62         }
       
    63         fwrite($this->log_handle, $message);
       
    64     }
       
    65 
       
    66     /**
       
    67      * Connect to the remote server
       
    68      *
       
    69      * @param string  $host
       
    70      * @param int     $port
       
    71      * @param boolean $secure
       
    72      * @param int     $timeout
       
    73      */
       
    74     public function connect($host, $port = 80, $secure = false)
       
    75     {
       
    76         $this->log("Connecting to: ${host}:${port}");
       
    77         return parent::connect($host, $port, $secure);
       
    78     }
       
    79 
       
    80     /**
       
    81      * Send request to the remote server
       
    82      *
       
    83      * @param string        $method
       
    84      * @param Zend_Uri_Http $uri
       
    85      * @param string        $http_ver
       
    86      * @param array         $headers
       
    87      * @param string        $body
       
    88      * @return string Request as string
       
    89      */
       
    90     public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
       
    91     {
       
    92         $request = parent::write($method, $uri, $http_ver, $headers, $body);
       
    93         $this->log("\n\n" . $request);
       
    94         return $request;
       
    95     }
       
    96 
       
    97     /**
       
    98      * Read response from server
       
    99      *
       
   100      * @return string
       
   101      */
       
   102     public function read()
       
   103     {
       
   104         $response = parent::read();
       
   105         $this->log("${response}\n\n");
       
   106         return $response;
       
   107     }
       
   108 
       
   109     /**
       
   110      * Close the connection to the server
       
   111      *
       
   112      */
       
   113     public function close()
       
   114     {
       
   115         $this->log("Closing socket\n\n");
       
   116         parent::close();
       
   117     }
       
   118 
       
   119 }