/**
  * Creates a ObjectStorage container or an object
  *
  * @param ObjectStorage_Abstract $objectStorageObject
  *
  * @return ObjectStorage_Abstract
  */
 public function create(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('PUT');
     $request = $objectStorageObject->getRequest();
     if ($objectStorageObject instanceof ObjectStorage_Object) {
         $localFile = $objectStorageObject->getLocalFile();
         if ($localFile != '') {
             if (!is_readable($localFile)) {
                 throw new ObjectStorage_Exception('Local file ' . $localFile . ' is not readable.');
             }
             $fileHander = fopen($localFile, 'r');
             if ($fileHander == false) {
                 throw new ObjectStorage_Exception('Failed to open local file ' . $localFile);
             }
             $client->setFileHandler($fileHander);
             // Override the content-length
             $request->setHeader('Content-Length', filesize($localFile));
         } else {
             $client->setBody($objectStorageObject->getRequest()->getBody());
         }
         if ($request->getHeader('Content-type') == '') {
             $request->setHeader('Content-type', ObjectStorage_Util::getMimeByName($objectStorageObject->getPath()));
         }
     }
     $headers = $request->getHeaders();
     if (count($headers) > 0) {
         foreach ($headers as $key => $value) {
             $client->setHeaders($key, $value);
         }
     }
     $response = $client->request();
     if ($this->isAcceptableResponse($response->getStatusCode())) {
         $objectStorageObject->setResponse($response);
         return $objectStorageObject;
     } else {
         throw ObjectStorage_Exception_Http::factory('Failed to create ' . $objectStorageObject . '.', $response->getStatusCode());
     }
 }