web/lib/Zend/Rest/Client.php
changeset 807 877f952ae2bd
parent 207 621fa6caec0c
child 1230 68c69c656a2c
--- a/web/lib/Zend/Rest/Client.php	Thu Mar 21 17:31:31 2013 +0100
+++ b/web/lib/Zend/Rest/Client.php	Thu Mar 21 19:50:53 2013 +0100
@@ -15,9 +15,9 @@
  * @category   Zend
  * @package    Zend_Rest
  * @subpackage Client
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
- * @version    $Id: Client.php 20096 2010-01-06 02:05:09Z bkarwin $
+ * @version    $Id: Client.php 24593 2012-01-05 20:35:02Z matthew $
  */
 
 
@@ -34,7 +34,7 @@
  * @category   Zend
  * @package    Zend_Rest
  * @subpackage Client
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
 class Zend_Rest_Client extends Zend_Service_Abstract
@@ -50,6 +50,13 @@
      * @var Zend_Uri_Http
      */
     protected $_uri = null;
+    
+    /**
+     * Flag indicating the Zend_Http_Client is fresh and needs no reset.
+     * Must be set explicitly if you want to keep preset parameters.
+     * @var bool true if you do not want a reset. Default false.
+     */
+    protected $_noReset = false;
 
     /**
      * Constructor
@@ -98,7 +105,7 @@
      * @throws Zend_Rest_Client_Exception
      * @return void
      */
-    final private function _prepareRest($path)
+    private function _prepareRest($path)
     {
         // Get the URI object and configure it
         if (!$this->_uri instanceof Zend_Uri_Http) {
@@ -118,7 +125,29 @@
          * Get the HTTP client and configure it for the endpoint URI.  Do this each time
          * because the Zend_Http_Client instance is shared among all Zend_Service_Abstract subclasses.
          */
-        self::getHttpClient()->resetParameters()->setUri($this->_uri);
+        if ($this->_noReset) {
+            // if $_noReset we do not want to reset on this request, 
+            // but we do on any subsequent request
+            $this->_noReset = false;
+        } else {
+            self::getHttpClient()->resetParameters();
+        }
+        
+        self::getHttpClient()->setUri($this->_uri);
+    }
+    
+    /**
+     * Tells Zend_Rest_Client not to reset all parameters on it's 
+     * Zend_Http_Client. If you want no reset, this must be called explicitly
+     * before every request for which you do not want to reset the parameters.
+     * Parameters will accumulate between requests, but as soon as you do not
+     * call this function prior to any request, all preset parameters will be reset
+     * as by default.
+     * @param boolean $bool
+     */
+    public function setNoReset($bool = true)
+    {
+        $this->_noReset = $bool;
     }
 
     /**
@@ -129,7 +158,7 @@
      * @throws Zend_Http_Client_Exception
      * @return Zend_Http_Response
      */
-    final public function restGet($path, array $query = null)
+    public function restGet($path, array $query = null)
     {
         $this->_prepareRest($path);
         $client = self::getHttpClient();
@@ -167,7 +196,7 @@
      * @throws Zend_Http_Client_Exception
      * @return Zend_Http_Response
      */
-    final public function restPost($path, $data = null)
+    public function restPost($path, $data = null)
     {
         $this->_prepareRest($path);
         return $this->_performPost('POST', $data);
@@ -181,7 +210,7 @@
      * @throws Zend_Http_Client_Exception
      * @return Zend_Http_Response
      */
-    final public function restPut($path, $data = null)
+    public function restPut($path, $data = null)
     {
         $this->_prepareRest($path);
         return $this->_performPost('PUT', $data);
@@ -194,10 +223,10 @@
      * @throws Zend_Http_Client_Exception
      * @return Zend_Http_Response
      */
-    final public function restDelete($path)
+    public function restDelete($path, $data = null)
     {
         $this->_prepareRest($path);
-        return self::getHttpClient()->request('DELETE');
+        return $this->_performPost('DELETE', $data);
     }
 
     /**