public static function factory($message = null, $responseCode = 0) { $errorMessage = null; switch ($responseCode) { case 400: $errorMessage = 'Bad Request'; break; case 401: $errorMessage = 'Unauthorized'; break; case 403: $errorMessage = 'Forbidden'; break; case 404: $errorMessage = 'Not Found'; break; case 405: $errorMessage = 'Method Not Allowed'; break; case 406: $errorMessage = 'Not Acceptable'; break; case 407: $errorMessage = 'Proxy Authentication Required'; break; case 408: $errorMessage = 'Request Timeout'; break; case 409: $errorMessage = 'Conflict'; break; case 500: $errorMessage = 'Internal Server Error'; break; case 501: $errorMessage = 'Not Implemented'; break; case 502: $errorMessage = 'Bad Gateway'; break; } if ($errorMessage != null) { $exception = __CLASS__ . '_' . str_replace(' ', '', $errorMessage); } else { $exception = __CLASS__; $errorMessage = 'Unable to process your request'; } if ($message == '') { $message = $errorMessage; } ObjectStorage_Util::__autoload_objectStorage_client($exception); if (!class_exists($exception)) { $exception = 'ObjectStorage_Exception'; } $newException = new $exception($message, $responseCode); // Set the initial caller's file name and line number instead of this factory method $stackTrace = debug_backtrace(); $newException->setFile($stackTrace[0]['file']); $newException->setLine($stackTrace[0]['line']); return $newException; }
/** * 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()); } }