/**
  * Modifies a ObjectStorage container or an object
  *
  * @param ObjectStorage_Abstract $objectStorageObject
  *
  * @return ObjectStorage_Abstract
  */
 public function update(ObjectStorage_Abstract $objectStorageObject)
 {
     $authData = $this->getAuthenticationData();
     $client = $this->getHttpClient();
     $client->setUri($authData->objectStorageUrl . '/' . rawurlencode(ltrim($objectStorageObject->getPath(), '/')));
     $client->setHeaders('X-Auth-Token', $authData->authToken);
     $client->setMethod('POST');
     $request = $objectStorageObject->getRequest();
     $headers = $request->getHeaders();
     if (count($headers) > 0) {
         foreach ($headers as $key => $value) {
             $client->setHeaders($key, $value);
         }
     }
     if ($objectStorageObject instanceof ObjectStorage_Object) {
         $client->setBody($request->getBody());
     }
     $response = $client->request();
     if ($this->isAcceptableResponse($response->getStatusCode())) {
         $objectStorageObject->setResponse($response);
         return $objectStorageObject;
     } else {
         throw ObjectStorage_Exception_Http::factory('Failed to save ' . $objectStorageObject . '. ' . $response->getBody(), $response->getStatusCode());
     }
 }